儿童班:
public class ChildExtending extends ParentAbstract{
public int childInt =111213;
static{
System.out.println("child static block executed");
}
public ChildExtending() {
System.out.println("child const initialized");
}
public void MethodInChild(){
System.out.println("MethodInChild called");
}
public static void main(String[] args){
System.out.println(ParentAbstract.parentInt);
System.out.println(ChildExtending.parentInt);
}
}
抽象类:
public abstract class ParentAbstract {
public static int parentInt=80713;
static{
System.out.println("parent static executed");
parentInt=9;
}
public ParentAbstract(){
System.out.println("parentAbstract initialized");
}
public void MethodInParent(){
System.out.println("MethodInParent called");
}
}
主类:
public class MainForCheck {
public static void main(String[] args){
/* ParentAbstract pa = new ParentAbstract(){
};*/
/* ChildExtending ce = new ChildExtending();
ce.childInt=5;*/
/*ChildExtending ce = new ChildExtending();
ce.childInt=5;
ce.MethodInChild();
System.out.println("pareny int is"+ce.parentInt);*/
ChildExtending ce = new ChildExtending();
ce.MethodInParent();
}
}
这给了我输出:
父静态执行]
子静态块执行
父抽象初始化
子常量初始化
MethodInParent 调用
为什么不是这样?
父静态执行
父抽象初始化
子静态块执行
子常量初始化
MethodInParent 调用