關於方法的重載

今天一直在爲一段code困惑,基類A中定義了一個抽象方法,並在子類B中實現,類C繼承了class B,並重載了這個方法。現在在基類中調用這個方法,那麼基類會去調用哪個類中的方法呢?

 

實際上這個問題很簡單,答案是調用class C中的實現方法。如果class C中沒有,則調用class C父類的方法。今天居然糾結在這裏,還好DL一語令我恍然大悟。其實我在自學java時也忽略了這個地方。

 

下面的代碼就是很好的例子

 


public abstract class A
{
 public abstract String print();
 
 public void fun()
 {
  System.out.println(print());
 }
}


public class B extends A

 public B()
 {
  super.fun();
 }
 
 public String print()
 {
  return "This is Class B !";
 }
 
 public void fun()
 {
  System.out.println(print());
 }
}

 


public class C extends B

 public C()
 {
  super.fun();
 }
 
 public String print()
 {
  return "This is Class C !";
 }
 
}

 


public class Test
{
 public static void main(String[] args)
 {

  new B();
  new C();
 }
}

 

輸出的結果就是

This is Class B !

This is Class C !

This is Class C !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章