抽象方法的不同实现是否可以作为重写?

时间:2016-05-27 22:39:27

标签: java abstract override

方法覆盖意味着子类型中超类型方法的不同实现。如果我们有一个抽象方法,那么每次类扩展包含抽象方法的类时我们必须实现。是不是类似于方法覆盖?

4 个答案:

答案 0 :(得分:0)

不完全。如果扩展具有方法体方法的类,则可能覆盖该方法,而如果该方法是抽象的,则必须要么实现它(覆盖),要么声明子类本身是抽象的。

抽象方法没有方法主体

答案 1 :(得分:0)

虽然可以使用@Override注释,但实现抽象方法并不会覆盖IMHO。

可以覆盖实现。具有实现抽象方法的具体类的子类可以覆盖具体类的实现,但此时实现的方法不再是抽象的。

答案 2 :(得分:0)

它凌驾于其中。

证明:

abstract public class Shape {
    public abstract void draw();
}

public class Square extends Shape {
    @Override // this does not fail!
    public void draw() {
        System.out.println("I am square!");
    }

    public static void main(String[] args) {
        Shape s = new Square();
        s.draw();
    }
}

如果覆盖,则@Override的使用应该被编译器(注释处理器)标记为错误。

答案 3 :(得分:0)

Handlebars docs使用术语"覆盖"为此:

  

如果非抽象方法mC覆盖C类中的抽象方法mA,则称mC从C实现mA。

这里使用单词覆盖包括实现抽象方法的情况。实现被描述为覆盖的专门案例。