【问题标题】:How to invoke base-class method from second-level inherited class? [duplicate]如何从二级继承类调用基类方法? [复制]
【发布时间】:2015-07-15 19:41:13
【问题描述】:

假设我有一个名为Vehicle 的基类,以及另一个名为Car 的扩展它的类。最后我有一个类Luxury 扩展Car

我知道我可以使用关键字super 来调用基类方法。如何从Luxury 调用Vehicle 类的方法?

【问题讨论】:

    标签: java super


    【解决方案1】:

    对此没有内置机制。您必须在第一个子类中创建一个辅助方法。

    public class A {
        public void myMethod() { ... }
    }
    
    public class B extends A {
        public void myMethod() {
            // something
        }
    
        protected void myMethodA() {
            super.myMethod();
        }
    }
    
    public class C extends B {
        public void myMethod() {
            myMethodA();
        }
    }
    

    【讨论】:

    • 谢谢,它有效.. 如果可以的话,就遵循最佳实践而言,您何时建议我创建辅助方法?
    • 我只会在需要时才这样做,即使如此也会谨慎。这种模式违反了 Liskov 替换原则,因为您应该期望类的子类与类本身的行为相同。需要此功能通常意味着架构错误,但在您有时间重构之前,它可能是一种有用的解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2018-09-17
    相关资源
    最近更新 更多