继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
答:父类:
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();
}
}
输出结果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
我不明白的是 : 为什么 ChildClass cc = new ChildClass(); 创建一个子类对象的同时,父类对象也创建了
FatherClass Create
ChildClass Create
答:父类:
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();
}
}
输出结果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
我不明白的是 : 为什么 ChildClass cc = new ChildClass(); 创建一个子类对象的同时,父类对象也创建了
FatherClass Create
ChildClass Create
package com.matthew.initsequence;
public class TheThirdOne {
String instanceField = getInstanceField("TheThirdOne instance field");
static String staticField = getstaticField("TheThirdOne static field");
{
System.out.println("TheThirdOne instance block");
}
static {
System.out.println("TheThirdOne static block");
} TheThirdOne() {
System.out.println("TheThirdOne Constructor");
}
String getInstanceField(String instanceField){
System.out.println(instanceField);
return instanceField;
}
static String getstaticField(String staticField){
System.out.println(staticField);
return staticField;
} protected void finalize() {
System.out.println("TheThirdOne.destructor");
}
public static void main(String[] args) {
System.out.println("");
new Child();
System.gc();
}
}class Parent {
String instanceField = getInstanceField("Parent instance field");
static String staticField = getstaticField("Parent static field");
{
System.out.println("Parent instance block");
}
static {
System.out.println("Parent static block");
} Parent() {
System.out.println("Parent Constructor");
}
String getInstanceField(String instanceField){
System.out.println(instanceField);
return instanceField;
}
static String getstaticField(String staticField){
System.out.println(staticField);
return staticField;
} protected void finalize() {
System.out.println("Parent.destructor");
}
}class Child extends Parent {
String instanceField = getInstanceField("Child instance field");
static String staticField = getstaticField("Child static field");
{
System.out.println("Child instance block");
}
static {
System.out.println("Child static block");
} Child() {
//super();
System.out.println("Child Constructor");
}
String getInstanceField(String instanceField){
System.out.println(instanceField);
return instanceField;
}
static String getstaticField(String staticField){
System.out.println(staticField);
return staticField;
}
protected void finalize() {
System.out.println("Child.destructor");
super.finalize();
}
}
如果你重写的object的构造,给她加个打印语句
它也会构造一个object的