用于继承中的替代覆盖规则:
1. 重写方法返回的数据必须可以替代原来返回的数据。原始类型,只有完全相同才能取代,对象引用则必须是原来引用类型的子类或同类,否则新的类型将无法胜任原来类型的任务。
2. 参数列表一旦发生变化,也就意味着这个方法的调用方式发生了变化,这样一来就更不可能去替代老方法了。
3. 访问限制如果比老方法的访问限制还要严格的话,那么原来可以访问该方法的代码,现在就有可能访问不到了,这样就无法替代老方法了。
Java中给予继承多台的实质含义与作用:
1. 抽象类中的抽象方法,只是起到了契约的作用。例如,继承自汽车的非抽象类,必须实现具体的刹车方法,否则编译不通过。弗雷中抽象方法个数是具体子类需要实现方法个数的最低限度,不能比起少,但是可以比弗雷中抽象方法的个数多,例如一些子类中特有的方法。
2. 因为具体子类遵守了契约,所以对于调用者而言,只要使用父类的引用就可以使用所有具体子类实现的不同功能,服了的抽象方法,调用者不必了解子类方法中的实现细节。
3. 但是,如果站在具体子类的角度上(使用特定具体子类类型的引用),则就没有这么强的灵活性了,因为特定类型的子类引用只能指向这个类的对象,想要使用其他类型的对象就不方便了,这就是多态性带来的好处,基于继承的多态充分说明,抽象层耦合比具体层耦合的选择性,灵活性更好。
阅读(760) | 评论(0) | 转发(0) |