簡體   English   中英

用父類調用子函數

[英]Calling child functions with parent class

我有一個模擬商店的Java程序。 我有一個包含3個子類(游戲,書籍和電影)的Product類。 我有一個Products數組,並且我想對數組中的每個項目進行某些處理,具體取決於它是哪種特殊的子類類型。

我遇到的問題是,該數組是Products的數組,因此,即使數組中的每個“ Product”實際上是三個子類之一,但數組中的項無法調用子類的函數。

我該如何解決? 我知道我可以在Product類中放入一堆抽象函數,這些抽象函數在子類中被覆蓋,但是我想知道是否有更簡單的方法可以做到這一點。

如果要對每個子類使用不同的功能,則只需使用“ instanceof”運算符並像下面這樣鍵入類型:

例如,在循環中的某處:

if(items[i] instanceof Game) {
   Game g = (Game)items[i];
   g.SomeGameSpecificFunc();
} else if(items[i] instanceof Book) {
   //...
}

您還可以通過反射獲得一個帶有當前對象類名稱的字符串,但這很慢:

String className = items[i].getClass().toString();

//in Java 7+
switch(className) {
   case "Book":
      //do something
      break;
      //etc
}

但是,只有在確實必須使用具有不同名稱和參數的函數時,才應使用這些技術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM