我正在学习 Java SE 7 认证考试,并且正在做一些关于继承和访问修饰符的无聊练习。
但是现在我在应用继承时遇到了意想不到的行为。在我的基础包com.testpkg
中,我有一个抽象类:
package com.testpkg;
public abstract class Abstract {
public int test();
}
请注意,我自愿省略了该方法的abstract
修饰符。test()
然后我有一个Abstract
在包中扩展的具体类com.testpkg.sub
:
package com.testpkg.sub;
public class Concrete extends Abstract {
public int test() {
return 0;
}
}
我使用以下方法测试这些类:
package com.testpkg;
import com.testpkg.sub.Concrete;
public class TestMain {
public static void main(String[] args) {
Abstract c = new Concrete();
System.out.println(c.test());
}
}
如果我尝试编译它,我显然会得到两个错误:
The method test() requires a body instead of a semicolon
但是如果我运行测试类:0
打印在控制台上!
这对我来说似乎很奇怪。你能解释一下为什么即使在课堂test()
上错误地声明了代码也能正常工作吗?Abstract
注意我正在使用 Eclipse IDE 编译/运行我的代码。