本文共 1045 字,大约阅读时间需要 3 分钟。
public abstract class Mammal { public abstract void Viviparous();//胎生 public abstract void ByFoot();//用脚行走 }
将这个类作为父类放在工程中,每增加一个具体动物类,就新建一个类继承Mammal,看着貌似是符合了开放封闭原则,可是当你增加蝙蝠类和鲸类,ByFoot()方法就有问题了,一个是飞的,一个是游的。怎么办?在父类增加一个方法吗?这明显违背了开放封闭原则。
有了这个教训,现在再考率抽象Mammal类,public abstract class Mammal { public abstract void Viviparous();//胎生 }
只有这一个行为。行走那个方法呢,那么新增具体动物类时,在具体类里自己定义符合自己要求的方法。这样一来,无论你增加什么哺乳动物,这个父类都能满足。凡是用到Mammal类的地方,其子类都能代替它。
2、父类的方法都要在子类中实现。 这就不用说了,如果子类没有完全实现父类方法,替换父类也就没什么意义了。 3、子类可以有自己的属性和方法。 这是体现继承的优势的地方,可以扩展父类。因为按照上述要求抽象的父类,必然是只有公共的本质的属性和行为。试想千万种现实的对象,即使按界门纲目科属种分,某一细类的公共部分也是很少的。所以有很多特有的属性和行为都需要子类自定义来丰富自己。转载地址:http://jlowx.baihongyu.com/