/*
继承中构造方法的关系
A:子类中所以有的构造方法默认都会访问父类中空参数的构造方法
B:为什么?
因为子类会继承父类中的数据,可能还会使用父类的数据
所以,子类初始化之前,一定要完成父类的初始化
注意:子类每一个构造方法的第一条语句默认都是:super()(意思是访问父类空参方法)
*/
class Father{
public Father(){
System.out.println("Father的无参构造方法");
}
public Father(String name){
System.out.println("Father的带参构造方法");
}
}
class Son extends Father{
public Son(){
//super();
System.out.println("son的无参构造方法");
}
public Son(string name){
//super();
System.out.println("son的带参构造方法");
}
}
class Dome{
public static void main(String[] args){
//创建对象
Son s = new Son();
//输出结果:son的无参构造方法,Father的无参构造方法
System.out.println("---------");
Son s1 = new Son("林青霞");
//输出结果:son的带参构造方法,Father的无参构造方法
}
}
/*
如果父类没有无参构造方法,那么子类的构造方法会出现什么现象?
报错
如何解决?
A:在父类中加一个无参构造方法
B:通过使用super关键字去显示的调用父类的带参构造方法
C: 子类通过this去调用本类的其他构造方法
子列中一定要有一个去访问了父类的构造方法,否则父类数据就没办法调用
注意事项:
对this(...)和super(...)的使用一定要放在第一条语句
如果不是放在第一条语句上,就有可能对父类的数据进行了多次初始化,所以一定要放在第一条语句上
*/
class Father{
public Father(String name){
System.out.println("Father的带参构造方法");
}
}
class Son extends Father{
public Son(){
super.();//调用父类的带参构造方法 第二种方法
System.out.println("Son的无参构造方法");
}
public Son(String name){
this.();//调用本类的无参构造,
//因为本类的无参构造访问了父类的带参构造所以才可以
System.out.println("Son的带参构造方法");
}
}
class Dome{
public static void main(String[] args){
//创建对象
Son s = new Son();
System.out.println("----------");
Son s1 = new Son("林青霞");
}
}
Java继承子类构造方法和父类之间的关系
最新推荐文章于 2023-04-09 16:19:09 发布