Java继承构造方法的访问特点「图文分析」

    科技2024-07-03  67

    Java继承构造方法的访问特点:

     

    1、子类构造方法中有一个默认隐含的super()调用,所以一定是先调用的父类构造,后执行的子类构造

    2、子类构造可以通过super关键字来调用父类重载构造

    3、super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super构造

    4、子类必须调用父类构造方法,不写则默认瘾式赠送一个super();写了则用写的指定的super调用,super只能有一个,还必须是第一个

     

     

    详细:

       1、子类构造方法中有一个默认隐含的super()调用,所以一定是先调用的父类构造,后执行的子类构造

    瘾式调用super()方法如图上图所示

    2、子类构造可以通过super关键字来调用父类重载构造

    在此之前先来看一个案例

    我在无参构造方法的基础上添加一个 int num 使其称为一个有参构造,结果编译器报错了

    原因是Zi在调用Fu类的无参构造方法的时候,Zi类中编译器会默认送一个super()方法,使其调用Fu类的无参构造方法,现在,无参构造方法的基础上添加一个 int num 使其称为一个有参构造后,结果编译器显示的错误如下

    There is no default constructor available 'com.baidu1.Fu'

    翻译过来就是:没有可用的默认构造函数'com.baidu1.Fu'

    用人的话来说,在com.baidu1这个包下的Fu类没有可以使用的构造方法

    解决的办法就是重载一个父类无参构造方法,或者用super()带参调用Fu类的有参的构造方法

    第一种,重载一个父类无参构造方法

    这个方法依然是调用的无参构造

    第二种方法,用super()带参调用Fu类的有参的构造方法

    这种方法是调用Fu类的有参构造,因为要传参数啦

    3、super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super构造

    演示第一个错误的写法

    错误原因:只有子类构造方法才能调用父类构造方法,普通方法是不能调用的

     

    演示第一个错误的写法

    来看一下错误提示:

    Call 'super()' must be first statement in constructor body

    翻译:调用“super()”必须是构造函数体中的第一个语句

     

    ================================

    注意:调用“super()”必须是构造函数体中的第一个语句,

    翻译是说的第一个语句,而不是编译器中的构造方法的第一行,这个有很大的区别

    下面这样依然报错

    语句应该是以 ; 结尾的,语句应该是以 ; 结尾的,语句应该是以 ; 结尾的

    说三遍

     

    Processed: 0.012, SQL: 8