2011-07-15 38 views
2

我有兩個類,一個是硬件依賴的,一個不是(我們分別稱它們爲HardwareDependent和HardwareIndependent)。硬件相關類擴展了與硬件無關的類。現在我有另一個類,至少必須是HardwareIndependent的擴展,但是我希望它是HardwareDependent的擴展,因此它可以利用附加功能。有沒有使用反射或其他方法來實現這一點的可能性?或者這是一個完全技術上的不可能性?我想如果一切都失敗了,我可以兩次寫這個班,但在我看來這是一種無效的方法。感謝您提前提供任何幫助。在Java運行時確定基類在運行時

回答

2

繼承在編譯時是固定的。

這聽起來像你不想讓你的新班級擴展 HardwareIndependent或HardwareDependent;你想要它使用一個對象,可以是。你想要組合而不是繼承。你是第三類(我們稱之爲HardwareComposite)有一個HardwareIndependent的參考。然後,可以使用instanceof運算符在運行時檢查它是否爲HardwareDependent,如果是,則將其轉換爲HardwareDependent並使用提供的附加工具。

如果您的設計迫使您將繼承和構圖的概念混合在一起,那麼您可以查看Facade和Factory模式。