在java中,sun公司设置了子类在执行其构造器之前必须先执行父类的构造器(默认是父类的无参构造器),咱们一起看代码演示
//父类
class Demo1{
private String name;
public Demo1(){
System.out.println("我是父类");
}
public Demo1(String name){
System.out.println("我的名字是"+ name);
}
}
//子类
class Demo2 extends Demo1{
private int age;
public Demo2(){
System.out.println("我是子类");
}
public Demo2(int age){
System.out.println("我的年龄是"+ age);
}
}
//主函数调用
public class Demo{
public static void main(String[] args){
//执行子类的无参构造
new Demo2();
}
}
最终控制台上显示的是:
我是父类
我是子类
其实子类构造器这里有个默认代码没有展示出来,这是默认存在的(注释部分)
//子类
class Demo2 extends Demo1{
private int age;
public Demo2(){
//super();//默认存在可以不写
System.out.println("我是子类");
}
public Demo2(int age){
//super();//默认存在可以不写
System.out.println("我的年龄是"+ age);
}
}
默认去调用父类的无参构造器,所谓运行之后会先显示父类的无参构造器内容,再显示子类的
当然,如果我们需要显示父类的有参构造器的时候,可以将这段代码
super();
手动修改为
super(参数);
这样就可以只调用父类的有参构造器了
如果我的文章帮助到您的话,还麻烦动动您的小手点个赞哦~ O(∩_∩)O!