方法覆盖意味着子类型中超类型方法的不同实现。如果我们有一个抽象方法,那么每次类扩展包含抽象方法的类时我们必须实现。是不是类似于方法覆盖?
答案 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。
这里使用单词覆盖包括实现抽象方法的情况。实现被描述为覆盖的专门案例。