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個問題依然存在。

Comments

Popular posts from this blog

Android+Google Map API v3 Geocoding(地址轉經緯度度