构造函数是类的一个特殊方法,这个方法用来生成实例时由系统自动调用,程序员无法直接调用。构造函数方法名同类名相同且参数为空。子类继承父类后默认继承父类的构造函数,即:子类存在隐含方法:super(),如果子类重写构造函数则子类也隐含调用super()。
如下例:
例一:
package sample;
public class A{
A(){
System.out.println("主类构造函数调用");
}
public static void main(String args[]){
A g=new A();
subA s=new subA();
}
}
class subA extends A{
}
执行结果为:
主类构造函数调用
主类构造函数调用
本例中子类subA中没有任何方法,所以隐含调用super(),super()指向A()。
例二:
package sample;
public class A{
A(){
System.out.println("主类构造函数调用");
}
public static void main(String args[]){
A g=new A();
subA s=new subA();
}
}
class subA extends A{
public subA(){
}
}
执行结果为:
主类构造函数调用
主类构造函数调用
本例中子类subA只有一个空方法suba()中没有任何方法,所以也隐含调用super(),super()指向A()。
例三:
package sample;
public class A{
A(){
System.out.println("主类构造函数调用");
}
public static void main(String args[]){
A g=new A();
subA s=new subA();
}
}
class subA extends A{
public subA(){
System.out.println("子类构造函数调用");
}
}
执行结果为:
主类构造函数调用
主类构造函数调用
子类构造函数调用
本例中子类subA的方法subA()虽然后输出但同上例中相同都为构造函数,所以也隐含调用super(),super()指向A()。