/** 继承中的构造函数初始化顺序
先初始化父类里的构造函数,之后再执行子类里的构造函数。
*/
=============================================================================
class FuQin{
FuQin(){
System.out.println("Fu run...");
}
}
class ErZi extends FuQin{
ErZi(){
//super ();子类默认构造函数的第一行都有一条隐式的语句。
System.out.println("Zi run..");
}
}
public class GouZaoFunction {
public static void main(String[] args) {
ErZi zi=new ErZi();//执行结果为:Fu run... Zi run...
}
}
====================================================================================
/* *
如果父类里面没有构造函数,虚拟机会默认的产生一个无参构造函数。
*/
class FuQin{
}
class ErZi extends FuQin{
ErZi(){
//super ();子类默认构造函数的第一行都有一条隐式的语句。
System.out.println("Zi run..");
}
}
public class GouZaoFunction {
public static void main(String[] args) {
ErZi zi=new ErZi();//执行结果为: Zi run...
}
}
====================================================================================
/**
如果父类里面有一个有参数的构造函数,则虚拟机就 不会自动生成一个无参数的构造函数了
*/
class FuQin{
FuQin(int x){
System.out.println("Fu dai can shu run...");
}
}
class ErZi extends FuQin{
//此时这里编译异常:Implicit super constructor FuQin() is undefined. Must explicitly invoke another constructor,故此时在父类类里面也应该手动写上无参数的构造函数。
ErZi(){
//super ();子类默认构造函数的第一行都有一条隐式的语句。
System.out.println("Zi run..");
}
}
public class GouZaoFunction {
public static void main(String[] args) {
ErZi zi=new ErZi();
}
}