scjp考試準備 - 6

來源:互聯網
上載者:User

標籤:style   class   blog   code   java   http   

 

題一,如下代碼的執行結果:

class Person{     String name = "No name";     public Person(String nm){name = nm;} } class Employee extends Person{     String empID = "0000";     public Employee(String id){empID = id;} } class EmployeeTest{     public static void main(String[] args){         Employee e = new Employee("4321");         System.out.println(e.empID);     } }

題二,如下代碼的執行結果:

class Atom{     Atom(){System.out.print("atom ");} } class Rock extends Atom{     Rock(String type){System.out.print(type);} } public class Mountain extends Rock{     Mountain(){         super("granite ");         new Rock("granite ");     }     public static void main(String[] a){new Mountain();} }

題三,對如下代碼執行哪些調整,可以使Sub類正常執行:

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.  }

調整選項:

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);}

 

這兩道題考察的重點是類的繼承,考點是父類構造器的調用。

關於父類構造器的調用需要注意以下幾點:

  1. 子類不會獲得父類的構造器;
  2. 在一個構造器中調用另一個重載的構造器可以使用this調用,在子類構造器中調用父類構造器可以使用super調用;
  3. 使用super調用父類構造器必須出現在子類構造器執行體的第一行;
  4. 不管是否使用super調用父類構造器,子類構造器總會調用父類構造器,調用形式有如下三種:
    • 子類構造器使用super顯式調用父類構造器;
    • 子類構造器使用this調用重載的構造器,重載的構造器調用父類構造器;
    • 若子類構造器執行體中沒有super調用,也沒有this調用,系統將會在執行子類構造器前隱式調用父類的無參數構造器。
  5. 當調用子類構造器初始化子類對象時,父類構造器總會在子類構造器前執行。以此向上類推,建立任何java對象,最先執行的總是Object類的構造器;
  6. 如果沒有為一個類提供自訂構造器,系統會預設為這個類提供一個無參數構造器;反之,若已經為這個類提供了自訂構造器,系統將不會為這個類提供隱式無參構造器。

 

題目分析:題一中Person類沒有無參數構造器,子類Employee的構造器中也沒有使用super調用Person類中已定義的構造器,那麼子類將無法找到無參數的Person類構造器,無法編譯。

附上題一編譯結果:

 

根據以上的第五條可以推斷出題二的執行結果。

題二執行結果:

 

對於題三,先分析所給的代碼,著重關注Sub類的第二個構造器,這個構造器需要隱式調用父類的無參構造器。父類沒有提供無參構造器。因此需要為父類Super添加一個無參構造器,或調整Sub類的第二個構造器,使之調用Super類的有參數的構造器。答案中CD正確,E中調用的父類成員變數a的範圍錯誤。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.