接口實現多態

接口的靈活性就在於“規定一個類必須做什麼,而不管你如何做”。我們可以定義一個接口類型的引用變量來引用實現接口的類的實例,當這個引用調用方法時,它會根據實際引用的類的實例來判斷具體調用哪個方法,這和上述的超類對象引用訪問子類對象的機制相似。

  舉例說明:


//定義接口InterA
interface InterA
{
 void fun();
}
//實現接口InterA的類B
class B implements InterA
{
 public void fun()
 {
  System.out.println(“This is B”);
 }
}

//實現接口InterA的類C
class C implements InterA
{
 public void fun()
 {
  System.out.println(“This is C”);
 }
}

class Test
{
 public static void main(String[] args)
 {
  InterA a;
  a= new B();
  a.fun();
  a = new C();
  a.fun();
 }
}

  輸出結果爲:

This is B
This is C

  上例中類B和類C是實現接口InterA的兩個類,分別實現了接口的方法fun(),通過將類B和類C的實例賦給接口引用a而實現了方法在運行時的動態綁定,充分利用了“一個接口,多個方法”展示了Java的動態多態性。

  需要注意的一點是:Java在利用接口變量調用其實現類的對象的方法時,該方法必須已經在接口中被聲明,而且在接口的實現類中該實現方法的類型和參數必須與接口中所定義的精確匹配。

  結束語

  以上就是java運行時多態性的實現方法,大家在編程過程中可以靈活運用,但是在性能要求較高的代碼中不提倡運用運行時多態,畢竟Java的運行時動態方法調用較之普通的方法調用的系統開銷是比較大的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章