[OCAJP]方法的可見度

Given:

Which change will enable the code to compile?

A. Adding the public modifier to the declaration of method1 at line n1
B. Removing the public modifier from the definition of method1 at line n2
C. Changing the private modifier on the declaration of method 2 public at line n3
D. Changing the line n4 DoClass doi = new DoClass();

題解

題目原先提供的程式會編譯錯誤,因為DoClass類別的method2方法使用了private修飾字來修飾,是私有成員,只有在DoClass類別內才可以存取。因此Test類別的main方法若要存取DoClass類別物件的method2方法會發生編譯錯誤。

選項A,介面(interface)定義的方法會自動以public修飾字來修飾,因此在line n1加上public修飾的結果和沒加public修飾的結果是一樣的。

選項B,移除line n2的public修飾字並不能改變method2只能在DoClass類別使用的情形。

選項C,使用public來修飾method2方法,讓它可以在DoClass類別之外被使用,為正確答案。

選項D,DoClass類別並沒有無參數的建構子,這樣修改反而會造成更多的編譯問題。

關於作者

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章