继承和组合

组合比较灵活。继承只能有一个父类,但是组合可以有多个属性。

对于is -a关系建议使用继承,has-a关系建议使用组合。

比如:Student is a Person这个逻辑没问题,但是:Student has a Person就有问题了。这时候,显然继承关系比较合适。

再比如:笔记本和芯片的关系显然是has-a关系,使用组合更好。

package com.it.test;

/**
 * 测试组合
 */
public class TestComponent {
    class Person2 /*extends Object*/{//自动继承Object类
        String name;
        int height;
        public void rest(){
            System.out.println("休息!");
        }
    }

    class Student2 /*extends Person2*/ {//不可以继承多个类 单继承
        String major;//专业
        Person2 person2 = new Person2();//组合:在子类中新建一个父类对象,作为子类属性
        public void study(){
            System.out.println("学习!");
            person2.rest();
            System.out.println(this.person2.name);
        }

        public Student2(String name,int height,String major){
            this.person2.name = name;
            this.major = major;
            this.person2.height = height;
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值