JAVA 继承 super关键字调用父类构造函数 注意事项

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("子类的无参构造");
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46411355/article/details/130044008