子类是调用了父类的构造方法,不是继承。

总结:
构造函数不能继承,只是调用而已。
子类在创建无参构造函数时,会默认调用父类无参构造函数,且放在第一行。
子类在创建有参构造函数时,如果不显示调用父类有参构造函数(super(int a))则会默认调用无参构造函数;如果显示调用了父类有参则不会再调用无参的。
【在面向对象的继承过程中,父类一定要有无参构造方法】

this和super的区分:
Super和this不能同时出现因为这两个都要在第一行,写了this再写super,this他会先调用本类其他方法,super再在其他的方法基础上在调其他方法的父类。又要都在第一行,冲突啦
this()表示本类的无参构造方法
super()表示父类的无参

代码理解:
public class FatherClass {
public FatherClass() {
System.out.println(100);
}
public FatherClass(int age) {
System.out.println(age);
}
}

public class SonClass extends FatherClass{
public SonClass() {
}
public SonClass(int c) {
System.out.println(1234);
}

public static void main(String[] args) {
FatherClass f = new FatherClass(28);
SonClass s = new SonClass(66);
}
}

编译后执行结果如下是什么呢?

分析:1. FatherClass f = new FatherClass(28);这句没有必要解释

2.SonClass s = new SonClass(66);执行这句时,调用

public SonClass(int c) {
System.out.println(1234);
}

在这个构造函数中,等价于

public SonClass(int c) {

            super();//必须是第1行,否则不能编译
             System.out.println(1234);
    }

所以结果是 100
1234

3.如果子类构造函数是这样写的

public SonClass(int c) {

            super(22);//必须是第1行,否则不能编译

           //显示调用了super后,系统就不再调用super();
             System.out.println(1234);
    }

执行结果是 22
1234

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值