【发布时间】:2012-03-01 03:16:05
【问题描述】:
假设我有两个类,A 和 B。A 类被定义为抽象类,而 B 扩展了这个抽象类,最后我测试了结果,两个类都是同一个包的一部分。
public abstract class A {
protected abstract void method1();
protected void method2() {
System.out.println("This is Class A's method");
}
}
public class B extends A {
@Override
protected void method1() {
System.out.println("This is B's implementaiton of A's method");
}
}
现在当我测试它们时:
B b = new B();
b.method1();
b.method2();
我得到了预期的输出:
This is B's implementaiton of A's method
This is Class A's method
问题:
-
@Override关键字的目的是什么,因为如果我省略它,它 仍然工作相同。 - 如果我不实现抽象方法,我会得到一个编译错误。那么与实现接口有什么区别呢?
- 另外,我也可以在 B 中实现
method2()。然后输出变为B中使用的东西。这不是也覆盖了父类方法吗?那么在Class A中显式定义一个方法为abstract的目的是什么?
【问题讨论】:
-
谷歌有时比在这里提问或回答要快:docs.oracle.com/javase/tutorial/java/IandI/abstract.html
-
google 在我们学校被屏蔽
-
没有谷歌你的互联网怎么存在?
标签: java overriding abstract-class