java继承构造方法调用顺序

第一种情况:

在这里插入图片描述

运行结果:

People(String name)
Child(String name)

分析:1.首先根据带参数的对象去找相应类的构造方法,在Child类中找到了带参数的构造方法,
2.因为有super(name)的语句存在,所以会去调用父类的带参数的构造方法,输出People(String name); 3、回到子类中执行输出Child(String name)。

第二种情况:

在这里插入图片描述

运行结果:
People()
Child(String name)

分析:
1、创建了一个带参数的对象,此时会去子类找相应的带参数的构造方法,尽管在该方法中没有写super()语句,但是还是会默认有super()方法的存在
2、默认的super()方法调用后还是去父类找到无参数的构造方法输出相应的语句。
3、再返回到子类输出

以下是一个相对来说较为复杂的调用示例:
在这里插入图片描述

分析:
1、首先创建了child对象,去找子类的构造方法,默认视为super()方法存在
2、此时去父类的无参构造方法People()方法
3、加载父类中的私有类型成员变量name
4、再次进入父类的构造方法里面,包含两个方法的调用
5、回到子类中寻找该方法playBasketBall(),并输出语句,但是父类的私有变量不能共享,因此输出name值为null
6、回到子类中寻找该方法playFootBall(),并输出语句,但是父类的私有变量不能共享,因此输出name值为null
7、父类构造方法的内容执行完毕,正式回到子类中。
8、继续加载子类的成员变量,执行方法并输出。

运行结果:
child_playFootball:null
child_playBasketball:null
child_playFootball:jerry
child_playBasketball:jerry

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值