package com.racky.test;
public class Ex {
public static void main(String[] args) {
Fx f=new Fx(5);
}
Ex() {
System.out.println("Ex无参数");
}
Ex(int i) {
System.out.println("Ex,INT型参数");
}
}
class Fx extends Ex{
Fx(){
super();
System.out.println("Fx无参数");
}
Fx(int i) {
this();
System.out.println("Fx,INT型参数");
}
}
Fx f=new Fx(5);这句调用构造方法Fx(int i),因构造函数中有调用自身无参构造方法的语句this();因此调用Fx的无参构造方法Fx(),在无参构造方法Fx()中又有调用父类的无参构造方法语句super();因此会调用Ex的无参构造方法Ex(),所以执行结果为
Ex无参数
Fx无参数
Fx,INT型参数
对于上例中如果是调用父类的无参构造,则super();省略也可以,因为对子类进行实例化的时候需要先执行父类的构造方法,如果不指定执行父类的哪一个构造方法,则会执行父类的无参构造方法
public class Ex {
public static void main(String[] args) {
Fx f=new Fx(5);
}
Ex() {
System.out.println("Ex无参数");
}
Ex(int i) {
System.out.println("Ex,INT型参数");
}
}
class Fx extends Ex{
Fx(){
super();
System.out.println("Fx无参数");
}
Fx(int i) {
this();
System.out.println("Fx,INT型参数");
}
}
Fx f=new Fx(5);这句调用构造方法Fx(int i),因构造函数中有调用自身无参构造方法的语句this();因此调用Fx的无参构造方法Fx(),在无参构造方法Fx()中又有调用父类的无参构造方法语句super();因此会调用Ex的无参构造方法Ex(),所以执行结果为
Ex无参数
Fx无参数
Fx,INT型参数
对于上例中如果是调用父类的无参构造,则super();省略也可以,因为对子类进行实例化的时候需要先执行父类的构造方法,如果不指定执行父类的哪一个构造方法,则会执行父类的无参构造方法