package test;
public class FatherClass()
{ public FatherClass()
{ System.out.println("FatherClass Create");}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{ System.out.println("ChildClass Create"); }
public static void main(String[] args)
{ FatherClass fc=new FatherClass();
ChildClass cc=new ChildClass(); }
}
输出结果:
解释:
public class FatherClass()
{ public FatherClass()
{ System.out.println("FatherClass Create");}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{ System.out.println("ChildClass Create"); }
public static void main(String[] args)
{ FatherClass fc=new FatherClass();
ChildClass cc=new ChildClass(); }
}
输出结果:
解释:
FatherClass Create
ChildClass Create
ChildClass cc=new ChildClass();//-->Firstly, it will invoke FatherClass's constructor, then itself's constructor, so output: FatherClass Create +"\n"+ ChildClass Create
FatherClass Create
FatherClass Create
ChildClass Create
解释:
public class FatherClass()括号需要删除才能运行程序。
import test.FatherClass;这句话纯属多余,这两个类在同一个包test下,不需要导入。
ChildClass继承父类FatherClass,它的无参构造函数ChildClass(),会默认调用父类的无参构造函数public FatherClass() ,因此在生成ChildClass对象时,它会执行System.out.println("FatherClass Create"),
然后再执行System.out.println("ChildClass Create")。所以输出FatherClass Create
ChildClass Create。
ChildClass()中也可以在第一句话中显示调用父类的构造函数super();
效果与你写的是一样。
FatherClass Create
FatherClass Create
ChildClass Create
不就是 构造函数的 问题嘛?
FatherClass fc=new FatherClass(); 看这一句 就调用了父类的构造函数public FatherClass()
{ System.out.println("FatherClass Create");}
}
所以打印出: FatherClass CreateChildClass cc=new ChildClass(); 再看这句 new了一个子类出来,子类构造的过程,先调用父类的构造的函数 再调用自己的构造函数所以 就打印出:FatherClass Create
ChildClass Create
就这么简单
FatherClass Create
ChildClass Create
执行子类构函的时候首先要执行父类的构函,所以就这样了
FatherClass Create
FatherClass Create
ChildClass Create
解释:
程序的入口点是main函数
|
|
执行FatherClass fc=new FatherClass();
其中 new FatherClass();就是调用FatherClass的构造函数
输出结果:FatherClass Create
|
|
执行ChildClass cc=new ChildClass();
其中new ChildClass();就是调用ChildClass的构造函数,
但是ChildClass继承了FatherClass,
在调用子类的构造函数之前,先要调用父类的构造函数。
输出结果:FatherClass Create (父类构造函数)
ChildClass Create (子类构造函数)
FatherClass Create /* 执行 ChildClass cc=new ChildClass();时先要调用父类的构造方法
ChildClass Create 后调用子类的构造方法。*/