子父类中构造函数的特点

/*
子父类中构造函数的特点:
在子类构造对象时,发现访问子类构造函数时,父类构造函数也运行了.
为什么呢?
原因是:在子类的构造函数中第一行有一个默认的隐式语句. super()

子类的实例化过程:子类中所有的构造函数都会默认访问父类中的空参数的构造函数.

为什么子类实例化的时候要访问父类中的构造函数呢?
那是因为子类继承了父类,获取到了父类中的内容(属性),所以在使用父类内容之前,
要看父类是如何对自己的内容进行初始化的.所以子类在构造对象是,必须访问父类中的构造函数.
为了完成这个必须的动作,就在子类的构造函数中加入了 super() 语句.
如果父类中没有定义空参数的构造函数,那么子类的构造函数就必须明确用 super() 调用父类中的
哪个构造函数.同时子类构造函数中如果使用 this() 调用了本类构造函数时,那么 super() 就没有了.
因为 super() 和 this() 都只能定义在第一行,只能有一个.但是可以保证的是,子类中肯定会有其他
构造函数访问父类中的构造函数.


注意,super 语句必修要定义在子类构造函数的第一行,因为父类的初始化动作要先执行.
 */
public class ExtendsDemo4 {

    public static void main(String[] args) {
        // new Zi_2() ; // A C
        new Zi_2(6); // A D
    }
}

class Fu_2 {
    Fu_2() {
        System.out.println("A Fu run");
    }

    Fu_2(int x) {
        System.out.println("B Fu run" + x);
    }
}

class Zi_2 extends Fu_2 {
    Zi_2() {
        // super() ; //调用的就是父类中的空参数的构造函数.
        System.out.println("C Zi run");
    }

    Zi_2(int x) {
//      this(); // A C D
        // super() ; //A D
        // super(6) ; //B D
        System.out.println("D Zi run" + x);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值