class Super{ private int a; protected Super(int a){this.a = a;} }...
class Sub extends Super{ public Sub(int a){super(a);} public Sub(){this.a = 5;} }
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);}
答案:CD
解析:
首先先注意題目用了 independently
代表每個選項單獨放
都要讓程式compile
A與B乍看之下都是可行的
但若是只改了第二行變數的開放程度
今天引用了Sub類的無引數建構子
因它沒有特別指出要引用父類的哪個建構子
它便會自動呼叫父類的無引述的建構子
父類Super偏偏沒有無引述建構子
此時就會產生編譯錯誤
E的話,父類的a為private
E既然沒有宣告變數a
那麼public Sub(){super(a);}的a又從哪來呢?
0 意見:
張貼留言