java继承与组合

来源:互联网 发布:剑网3脸型数据 编辑:程序博客网 时间:2024/05/29 14:26

继承是实现类重用的重要手段,但继承带来了一个最大的坏处:破坏封装。子类可以直接访问父类的属性(内部信息)和方法,从而造成子类与父类的严重耦合。子类可以重写的方式来改变父类方法实现,从而导致子类可以恶意篡改父类的方法。


为了保证父类良好的封装性,不会被子类随意改变,应该遵循如下规则:

1,属性尽量设置成private,不让子类访问

2,父类中那些仅为辅助其他工具方法,应该使用private。如果必须用public,但又希望不被重写,可以使用final。如果希望被子类重写,但不希望别的类,可以使用protected

3,不能在父类构造器中调用被子类重写的方法。



如果需要复用一个类,除了把这个类当成基类来继承外,还可以把该类当成另一个类的组合成分,从而允许新类直接复用该类的public方法。

组合把旧类对象作为新类属性嵌入,用以实现新类的功能。通常需要在新类里使用private修饰嵌入旧类对象。

class Bird

{ private Animal a;

 public Bird(Animal a)

{  this.a=a;

}

]


注意:使用继承和组合,都需要创建两个对象。继承是父类对象和子类对象。组合是创建封装对象和自身对象。所以开销差不多。

0 0
原创粉丝点击