從superclass
考慮以下代碼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