【发布时间】:2016-04-30 00:05:39
【问题描述】:
我遇到了这个问题,我想知道这里有什么区别:
abstract class Abstract {
Abstract() {
System.out.println("Abstract.Abstract()");
}
Abstract(String s) {
System.out.println("Abstract.Abstract(String)");
}
void test() {
System.out.println("Abstract.test()");
}
void test(String s) {
System.out.println("Abstract.test(s)");
}
}
abstract class Base extends Abstract {
}
class Sub extends Base {
Sub(String s) {
super(s); // undefined constructor
}
void subTest(String s) {
super.test(s); // why is this all right then?
}
}
为什么我必须定义 Base(String s) 构造函数以使其可编译,但 super.test(s) 调用没有定义任何内容就可以了?
【问题讨论】:
标签: java inheritance constructor abstract-class default-constructor