我有一个程序可以创建植物的数组列表,有三个类可以扩展植物:花,真菌和杂草。
所有三个子类共享3个质量,其方法在Plant类中。我可以使用myList.get(i).getPlantName轻松访问我的arraylist。 getPlantName是工厂类中的访问器方法。
子类具有独特的特性,例如,Flower Class具有类似hasThorns和hasSmell的特性。我无法访问这些访问器。我以为我能写出像myList.get(i).getHasSmell这样的东西。 getHasSmell是我的花类中定义的方法(Flower是植物的扩展类)。
我的程序大部分工作都很好,我能够创建扩展类的对象,我唯一无法做的就是使用扩展类中的访问器方法,如上段所述。
为什么我无法在扩展类中使用这些访问器?任何帮助将不胜感激。
答案 0 :(得分:0)
根据它的声音,你试图访问子类中定义的方法,这些方法在父类中不存在。
为了访问这些方法,父类(Plant)将需要定义方法(以具体方式定义,例如Plant.hasSmell(){return false;}或作为抽象方法)并被覆盖在子类中,或者为您提供一些方法来确定将Plant对象强制转换为哪个子类,以便调用该方法。
E.g。植物类型中的植物类型(杂草,花卉,真菌),以及进行演员的转换。
我个人建议将父类中的抽象方法作为首选方法。