class SuperClass { SuperClass() {
System.out.println("SuperClass constructor"); } } public
class SubClass extends SuperClass { SubClass() {
System.out.println("SubClass constructor"); } public static
void main(String[] args) { SubClass sub = new SubClass(); }
} 输出结果: SuperClass constructor SubClass constructor
在子类中只实例化了一个子类对象。从输出结果上看,程序并不是一开始就运行自己的构造方法,而是先运行其父类的默认构造方法。注意:程序自动调用其父类的默认构造方法。
示例2:
class SuperClass { SuperClass(String str) {
System.out.println("Super with a string."); } } public
class SubClass extends SuperClass { SubClass(String str) {
System.out.println("Sub with a string."); } public static void
main(String[] args) { SubClass sub = new SubClass("sub"); }
}
在JDK下编译此程序不能成功。正如上例中说的:程序在初始化子类时先要寻找其父类的默认构造方法,结果没找到,那么编译自然不能通过。