JAVA 继承 super关键字调用父类构造函数 注意事项
- 1.子类在创建对象时,默认会先调用父类的构造方法
- 2.原因是子类构造函数中的第一行默认存在super();–表示调用父类的无参构造
- 3.当父类没有无参构造时,可以通过super(参数);手动调用父类的其他含参构造
- 注意:子类必须调用父类的是一个构造函数,不管是无参还是含参,选一个即可
- 4.super调用构造函数要求必须在构造函数的第1行1
- 5.构造方法不可以被继承!原因:因为构造函数的要求方法名必须是本类的类名,不能在子类中出现一个父类名字的构造方法
package cn.tedu.oop3;
/**本类用于测试super的用法
* 1.子类在创建对象时,默认会先调用父类的构造方法
* 2.原因是子类构造函数中的第一行默认存在super();--表示调用父类的无参构造
* 3.当父类没有无参构造时,可以通过super(参数);手动调用父类的其他含参构造
* 注意:子类必须调用父类的是一个构造函数,不管是无参还是含参,选一个即可
* 4.super调用构造函数要求必须在构造函数的第1行1
* 5.构造方法不可以被继承!原因:因为构造函数的要求方法名必须是本类的类名
* 不能在子类中出现一个父类名字的构造方法*/
public class TestSuper2 {
public static void main(String[] args) {
//5.触发父类的两个构造函数创建对象
// Father2 f1 =new Father2();//触发父类的无参构造
Father2 f2 =new Father2(88);//触发父类的含参构造
//6.创建子类对象进行测试
Son2 s = new Son2();
}
}
//1.创建父类
class Father2{
//3.创建父类无参构造与含参构造
// public Father2(){
// System.out.println("我是父类的无参构造");
// }
public Father2(int n){
System.out.println("我是父类的含参构造"+n);
}
}
//2.创建子类
class Son2 extends Father2{
//4.创建子类的无参构造
public Son2(){
// super();//表示调用父类的无参构造
super(99);//表示父类的含参构造
System.out.println("子类的无参构造");
}
}