+ -
当前位置:首页 → 问答吧 → 继承与物件的初始化顺序

继承与物件的初始化顺序

时间:2011-09-26

来源:互联网

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class A{
  public A()
  {
    System.out.println("A");
  }  
}
class B extends A{
  public B(){
    System.out.println("B");
  }
}
public class C extends B{
  A a=new A();
  public C(){     System.out.println("C");
  }
  public static void main(String arg[]){
    C c=new C();
  }
}
output=ABAC

不好意思,想请问一下在继承关系下,父类别的实体与成员初始化是在进入C类别的建构子之前就产生的,还是在C的建构子透过super()处层层呼叫产生的?
从结果来看在产生c物件之前,A类别与B类别及已先后产生实体并已初始化,然后产生c物件后才对成员物件a进行初始化,再进入建构子C(),因此会印出ABAC

作者: fann0731   发布时间: 2011-09-26

根据语法规则,建构式的第一行,如果没有呼叫 super 方法的话…
会自动补上

作者: ddtet   发布时间: 2011-09-26

ddtet wrote:
根据语法规则,建构式的第一行,如果没有呼叫 super 方法的话…
会自动补上

作者: fann0731   发布时间: 2011-09-26

你要的答案在你的引言往下两行

作者: ddtet   发布时间: 2011-09-26

ddtet wrote:
你要的答案在你的引言往下两行

作者: fann0731   发布时间: 2011-09-26

唔…我辞穷了…
super() 表示父类别的建构式,B 是 C 的父类别,A 是 B 的父类别

作者: ddtet   发布时间: 2011-09-26

热门下载

更多