package Test;
class Base{
int num=1;
public Base(){
this.print();
num=2;
}
public Base(int num){
this.num=num;
this.print();
}
public void print(){
System.out.println("Base.num="+num);
}
}
class Sub extends Base{
int num=3;
public Sub(){
this.print();
num=4;
this.print();
}
public Sub(int num){
// 默认调用父类的无参数构造函数
this.print();
this.num=num;
this.print(); //输出为10
// num=10;
// this.print(); //输出结果为3
}
public Sub(int num1,int num2){
super(num1); //显示调用还是默认调用 都是在完成int num初始化的之前 去调用父类的构造函数
this.print();
this.num=num2;
this.print(); //输出为10
// num=10;
// this.print(); //输出结果为3
}
public void print(){
System.out.println("Sub.num="+num);
}
}
public class HelloWorld{
public static void main(String[] args) {
Base b=new Sub();
System.out.println(b.num);
System.out.println("---------------");
new Sub(5); //即便是加载重载的构造函数 还是先去调用父类的构造函数
System.out.println("---------------");
new Sub(6,7);
}
}
/*
* Sub.num=0
Sub.num=3
Sub.num=4
2
---------------
Sub.num=0
Sub.num=3
Sub.num=5
---------------
Sub.num=0
Sub.num=3
Sub.num=7
* */
【Java】构造函数
最新推荐文章于 2022-05-17 07:00:15 发布