后端

java 继承与组合

菠萝猫 · 7月30日 · 2019年 283次已读

就我的理解,他们之间的区别在于:

继承是在父类定义好之后,子类在不与父类定义重复下,构造自己的变量或方法,当需要父类中的一些变量或方法时直接调用。

组合则是子类构造时直接将需要的父类中的方法或变量添加到自身。

继承:

package t3;

public class animal
{
    public void breath(){
        System.out.println("我在呼吸......");
    }
}
package t3;

public class bird extends animal{
    public void fly(){
        System.out.println("我在飞翔......");
    }
}
package t3;

public class test {
    public static void main(String[] args) {
        bird sc = new bird();
        sc.breath();
        sc.fly();
    }
}

组合:

package t3;

public class animal
{
    public void breath(){
        System.out.println("我在呼吸......");
    }
}
package t3;

public class bird{
    //将父类组合到子类中,作为新的子类的成分
//需要用private去修饰被组合的对象,确保封装的密封性
    private animal a;
    public bird(animal a){
        this.a = a;
    }
    //重新定义breath方法
    public void breath(){
        a.breath();
    }
    public void fly(){
        System.out.println("我在飞翔......");
    }
}
package t3;

public class test {
    public static void main(String[] args) {
        animal a = new animal();
        bird sc = new bird(a);
        sc.breath();
        sc.fly();
    }
}

为什么要用组合?

组合可以有效保证一些类的封装性。别忘了要用private来修饰定义的被组合类的对象。


版权声明:本站采用 “知识共享署名 – 非商业性使用 – 相同方式共享 4.0 中国大陆许可协议” 进行许可,您可以转载本站文章,转载时请以超链接形式标明文章原始出处,Thanks.
0 条回应