【问题标题】:Java abstract class, Interface, method Overriding [duplicate]Java抽象类,接口,方法覆盖[重复]
【发布时间】:2015-08-20 09:37:51
【问题描述】:

您好,我对方法实现感到困惑,所以请任何人帮助我? 以下是我的场景

我有一个抽象类

public abstract class VehicalAbstarct {

    public abstract void speed();
}

我只有一个界面

public interface Vehical {

    public void speed();
}

我还有一个类扩展了 VehicalAbstarct 并实现了 Vehical 接口

public class VehicalExample extends VehicalAbstarct implements Vehical {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        VehicalExample v=new VehicalExample();
        v.speed();
    }

    @Override
    public void speed() {
        // TODO Auto-generated method stub
        System.out.println("Speed is calling from vehical example..");
    }

}

***********OUTPUT************
Speed is calling from vehical example..

现在speed()方法是VehicalAbstarct类的@Override还是Vehical接口的@Override?​​p>

如果@Override 由 VehicalAbstarct 类,那怎么办? 和 @Override by Vehical 接口然后如何?

【问题讨论】:

  • 好的,当有人将您链接到另一个问题时,您应该阅读它并说出它是否回答了您的问题。我认为接受的答案解决了您的要求-您将两者都覆盖。就像您实现了两个具有共同方法名称的独立接口一样。

标签: java oop abstract-class overriding


【解决方案1】:

您覆盖VehicalAbstarct 中的方法,它会覆盖Vehical 接口中的方法。所以,在某种程度上,你覆盖了它们。

看这个例子:

interface A {
    default void method() {
    }
}

abstract class B {
    abstract void method();
}

class C extends B implements A {
    // compiler error, method() not implemented
}

尽管A 具有method() 的默认实现,但它被B 用抽象实现覆盖。因此我们必须在C 中覆盖它。

【讨论】:

    猜你喜欢
    • 2012-07-11
    • 2015-11-27
    • 1970-01-01
    • 2011-12-05
    • 2011-07-02
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多