Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 无法在扩展类中使用访问器_Oop_Accessor - Fatal编程技术网

Oop 无法在扩展类中使用访问器

Oop 无法在扩展类中使用访问器,oop,accessor,Oop,Accessor,我有一个程序可以创建一个植物数组列表,有三个类可以扩展植物:花、真菌和杂草 所有三个子类都有3个特性,它们的方法都在Plant类中。我可以使用myList.get(I).getPlantName从我的arraylist轻松访问这些。getPlantName是plant类内部的访问器方法 子类具有独特的特性,例如,Flower类具有hasshorn和hasSmell等特性。但我无法访问这些访问器。我想我可以写一些像myList.get(I).getHasSmell这样的东西。getHasSmell

我有一个程序可以创建一个植物数组列表,有三个类可以扩展植物:花、真菌和杂草

所有三个子类都有3个特性,它们的方法都在Plant类中。我可以使用myList.get(I).getPlantName从我的arraylist轻松访问这些。getPlantName是plant类内部的访问器方法

子类具有独特的特性,例如,Flower类具有hasshorn和hasSmell等特性。但我无法访问这些访问器。我想我可以写一些像myList.get(I).getHasSmell这样的东西。getHasSmell是我的flower类中定义的一个方法(flower是Plant的扩展类)

我的大部分程序都工作得很好,我能够创建扩展类的对象,我唯一不能做的就是在扩展类中使用访问器方法,如上面一段所述


为什么我不能在扩展类中使用这些访问器?任何帮助都将不胜感激。

听上去,您试图访问子类上定义的方法,而父类中不存在这些方法

为了访问这些方法,父类(Plant)需要定义该方法(以具体的方式,例如Plant.hasSmell(){return false;}或作为抽象方法)并在子类中被重写,或者为您提供某种方法来确定将Plant对象强制转换到哪个子类以调用该方法

例如,植物中植物类型(杂草、花、真菌)的枚举,以及执行强制转换的开关


就我个人而言,我建议首选父类中的抽象方法。

你在说什么编程语言?