SCJP題庫第018題
1. class Super{
2. private int a;
3. protected Super(int a){this.a = a;}
4. }
...
11. class Sub extends Super{
12. public Sub(int a){super(a);}
13. public Sub(){this.a = 5;}
14. }
Which two, independently, will allow Sub to compile? (Choose two.)
A. Change line 2 to:
public int a;
B. Change line 2 to:
protected int a;
C. Change line 13 to:
public Sub(){this(5);}
D. Change line 13 to:
public Sub(){super(5);}
E. Change line 13 to:
public Sub(){super(a);}
Ans:C D
解說:
上面的程式會發生二個編譯上的錯誤,
第一錯誤是:第13行,會自動地被javac加入一個super()呼叫,而super類別中又沒有無參數的建構子。
第二個錯誤是this.a會存取到super中私有的a,造成錯誤!
A/B將super中的a存取屬性改成public/protected僅修正第2個錯誤,第1個錯誤還在
E修正了第1個問題,但第2個問題依然存在。
上面的程式會發生二個編譯上的錯誤,
第一錯誤是:第13行,會自動地被javac加入一個super()呼叫,而super類別中又沒有無參數的建構子。
第二個錯誤是this.a會存取到super中私有的a,造成錯誤!
A/B將super中的a存取屬性改成public/protected僅修正第2個錯誤,第1個錯誤還在
E修正了第1個問題,但第2個問題依然存在。
Comments