在 Java 中,使用繼承時,透過超類別引用存取特定於子類別的方法可能會遇到困難。
當變數被宣告為具有超類別類型時,就會出現問題,限制對僅在超類別中定義的方法和成員變數的存取。例如,以下程式碼說明了這個問題:
Pet cat = new Cat("Feline", 12, "Orange"); cat.getName(); // This is allowed cat.getColor(); // This is not allowed (getColor() is not in Pet)
要解決此問題,有幾個選項:
Cat cat = new Cat("Feline", 12, "Orange"); cat.getName(); // Allowed cat.getColor(); // Allowed
這種方法提供了對子類別方法和成員的直接存取
Pet cat = new Cat("Feline", 12, "Orange"); ((Cat)cat).getName(); // Allowed ((Cat)cat).getColor(); // Allowed
這裡,我們之前明確將變數cat強制轉換為 Cat 類型存取子類別特定的方法。
Pet pet = new Cat("Feline", 12, "Orange"); Cat cat = (Cat)pet; cat.getName(); // Allowed cat.getColor(); // Allowed
為了方便和清晰,這兩種方法結合在一起。
透過使用這些技術,您可以有效地從超類別引用呼叫子類別方法,確保存取所需的功能。
以上是如何在 Java 中使用超類別引用存取子類別方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!