我的問題是如下:店子類(JAVA)
我有一個抽象類,稱爲產品和2+子類稱爲書和雜誌。雜誌有一種額外的方法,在產品或書籍中找不到。
到目前爲止這麼好。但我想在1陣列中存儲這些不同的產品,像這樣:
List<Product> products = new ArrayList<>(); products.add(new Book()); products.add(new Magazine());
還是沒有問題吧?然而,在這一點上,我也想這樣做(指數1爲雜誌):
products.get(1).magazineMethod()
而這正是一切放平。我知道instanceof以及如何解決我的問題。然而,在谷歌搜索和看在stackoverflow似乎在這個問題上使用instanceof是不好的。對於每個不同的產品子類,我都必須使用instanceof添加另一個檢查。我問我的老師這件事,他不能給我一個正確的答案,並告訴我他會檢查出來。
我知道多態性是如何工作的,如果產品也有magazineMethod(),它會起作用。但這是沒有意義的,因爲產品不是雜誌,這樣做會打敗整個繼承點。
是的,這是家庭作業的一部分,但我腦海中的問題是如此重要,以至於我想要適當的解決方案而不是一些解決方法/ hackjob。
如果你的集合是'Product'類型,你爲什麼要調用'magazineMethod'? – user7
@ user7因爲它是Magazine類的一個屬性的getter,它不在Product或Book中。 – Tryphon