acv*_*uno 2 java polymorphism overriding
多态性允许程序员继承,覆盖或重载父类的实例方法.
但是,它不允许在父类中使父类的实例方法更具限制性.即它不允许使用父类实例方法的相同名称,在子类中声明为private.
如果子类没有覆盖它,JVM也会识别实例方法的父类版本.
同样,为什么JVM不识别实例方法的父类版本,如果子类使其更具限制性?
子类中父类的限制性更强的方法可以被视为子类特定方法,而不是编译器重写的方法.
Ree*_*sey 17
这一切都是为了遵循Liskov替代原则.
为了使面向对象编程中的继承行为符合预期,子类应该能够替换父类实例而不会破坏类的用户.
使子方法更具限制性基本上是说"我不希望这种方法可见".在这种情况下让JVM自动替换父类实现只会增加大量的混淆 - 只是改变调用行为可能会导致非常意外的行为,甚至完全在子类中......
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |