Java抽象类,接口,方法重写

时间:2015-06-05 12:22:26

标签: java oop override abstract-class method-overriding

你好我对方法实现很困惑所以请任何人帮助我? 以下是我的方案

我有一个抽象类

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?

如果@Override由 VehicalAbstarct 上课,那怎么样? 和 @Override by Vehical 界面又如何?

1 个答案:

答案 0 :(得分:0)

您覆盖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中覆盖它。