」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從Java中的超類變量訪問子類方法?

如何從Java中的超類變量訪問子類方法?

發佈於2025-03-24
瀏覽:779

How Can I Access Subclass Methods from a Superclass Variable in Java?
從superclass

在對象 - 方向編程中,sashitance允許類senasenits允許類從父母類中繼承屬性和行為。但是,當從超級類變量訪問子類的方法時,會發生一些限制。

考慮以下代碼shippet:抽象公共類PET { ... } 公共班級貓擴展寵物{ 私人字符串顏色; 公共字符串getColor(){...} } 公共類狗窩{ 公共靜態void main(string [] args){ 寵物貓=新貓(“貓科動物”,12,“橙色”); cat.getColor(); //編譯器錯誤:getColor()未在PET中定義 } } 在狗窩類中,當將CAT對象分配到PET變量時,只有PET中定義的成員才能訪問。這包括諸如getName()和getage()之類的方法,而不是getColor()。

解決此問題,有兩個選項:

1。將變量聲明為子類:

將變量聲明為特定的子類:

cat cat = new cat = new cat(“ feline”,12,“橙色”); cat.getColor(); //有效,getColor()在CAT

2中定義。鑄造變量到子類:
abstract public class Pet {
    ...
}

public class Cat extends Pet {
    private String color;
    public String getColor() { ... }
}

public class Kennel {
    public static void main(String[] args) {
        Pet cat = new Cat("Feline", 12, "Orange");
        cat.getColor(); // Compiler error: getColor() not defined in Pet
    }
}
pet cat = new cat = new cat(“ feline”,12,“橙色”); ((cat)cat).getColor(); //有效,getColor()可以通過鑄造

args){ 貓=新貓(“貓”,12,“橙色”); system.out.println(“貓的顏色:” cat.getColor()); } }

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3