从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