/*
子父类中构造函数的特点
在子类构造对象时,发现,访问子类构造函数时,父类也运行了。
为什么呢?
原因是:在子类的构造函数中第一行有一个默认的隐式语句。super();
子类的实例化过程,子类中所有构造函数默认都会访问父类中的空参数的构造函数。
为什么子类实例化的时候要访问父类中的构造函数呢?
那是因为子类继承了父类,获取到了父类中的内容(属性),所以在使用父类内容之前,要
先看父类是如何对自己的内容进行初始化的。
所以子类在构造对象时,必须访问父类中的构造函数。
为了完成这个必须的动作,就在子类的构造函数中加入了super()语句。
如果父类中没有定义空参数构造函数,那么子类中的构造函数必须使用super明确
要调用父类中哪个构造函数。同时子类构造函数中使用了this调用了本类构造函数时,
那么super就没有了。因为super和this都只能定义在第一行。所以两个之中只能有一个。
注意:super语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。
*/
class Fu{
int num;
Fu(){
num=10;
System.out.println("Fu hello world ");
}
Fu(int x){
System.out.println("Fu x="+x);
}
}
class Zi extends Fu{
Zi(){
//super(); //调用的就是父类中的空参数的构造函数。
System.out.println("Zi hello world "+num);
}
Zi(int x){
System.out.println("Zi x="+x);
}
}
public class ExtendsDemo1{
public static void main(String[] args){
new Zi();
/*
结果:
Fu hello world
Zi hello world 10;
*/
}
}
Java中子父类构造函数特点
最新推荐文章于 2024-07-19 17:37:28 发布