從一道SCJP 試題來看你對繼承和多態的理解程度? csdn)

來源:互聯網
上載者:User

What is displayed when the following is executed?

class Parent{
   private void method1(){
     System.out.println("Parent's method1()");
   }
  public void method2()
  {
    System.out.println("Parent's method2()");
    method1();
  }
}

class Child extends Parent{
  public void method1(){
    System.out.println("Child's method1()");
  }

  public static void main(String args[]){

  Parent p = new Child();
  p.method2();
  }

}

Choices:

a. Compile time error

b. Run time error

c. prints : Parent's method2()

          Parent's method1()

d. prints : Parent's method2()

          Child's method1()

 

 

答案是C

但是我們把題改一下,

class Parent{
   private void method1(){
     System.out.println("Parent's method1()");
   }
  public void method2()
  {
    System.out.println("Parent's method2()");
    method1();
  }
}

class Child extends Parent{
  public void method1(){
    System.out.println("Child's method1()");
  }

  public static void main(String args[]){

  Child p = new Child();//改變了這裡

  p.method2();
  }

}

應該選什麼? 也是C!

我們再改一下:

class Parent{
   public  void method1(){  //change here
     System.out.println("Parent's method1()");
   }
  public void method2()
  {
    System.out.println("Parent's method2()");
    method1();
  }
}

class Child extends Parent{
  public void method1(){
    System.out.println("Child's method1()");
  }

  public static void main(String args[]){

  Parent p = new Child();
  p.method2();
  }

}

 

這次終於是答案D了,我們再改
:

class Parent{
   public  void method1(){  //change here
     System.out.println("Parent's method1()");
   }
  public void method2()
  {
    System.out.println("Parent's method2()");
    method1();
  }
}

class Child extends Parent{
  public void method1(){
    System.out.println("Child's method1()");
  }

  public static void main(String args[]){

  Child p = new Child();//change here
  p.method2();
  }

}

也是答案D,我這裡是運行過的結果,可是不理解為什麼,那個高手跳出來解釋一下?

參考貼:
http://community.csdn.net/Expert/topic/3490/3490386.xml?temp=.3488581

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.