public Tiger(int age) { this.age = age; print(); } public void print() { System.out.println("I'am a " + age + "岁 " + hight + "尺高 tiger!"); } } public class JavanTiger extends Tiger { public JavanTiger() { super(1); // 调用父类有参数的构造函数 } public static void main(String[] args) { new JavanTiger(); } }
这段代码中的 super(1)必须要写进去,否则编译器会报错。所以我简单的总结了一下,“this()是调用自己其他的构造函数,super()是调用自己继承的父类的构造函数“,如果只想调用默认无参数的父类构造函数,不用在子类的构造函数当中写出来,但是实际编程的时候,总是会忽略这一点。 那门这两个关键字能不能同时出现在子类的一个构造函数当中纳?答案肯定是不能。先说下自己的理解: 1)在新建一个基类的时候,不论递归调用几次自身的构造函数,最终你都会去调用父类的构造函数,(不是显式调用的话,系统会调用默认无参数的父类构造函数); 2)JAVA 中规定使用 this 和 super 时必须放在构造函数第一行,只有一个第一行;