假设我正在编写一个动物园模拟器(在处理继承时我最喜欢的例子)。我有一个将军Animal
类(class)。然后我有两个类(class) extend Animal
叫Bird
另一个叫 LandAnimal
。 Bird
的所有子类将以同样的方式移动(我不打算在我的动物园里养鸵鸟!),LandAnimal
也同样如此。 。因此,我做了一个move()
Animal
中的方法类(class)。但鸟类和陆地动物的移动方式如此不同,因此我不想在方法中添加任何内容。所以我标记了abstract
忽略了 Bird
的所有子类这一事实将不得不实现它。即使代码只是这样,这对我来说似乎不太好
@Override
public void move()
{
super.move();
}
在每个文件中都包含它仍然感觉不对。
主要问题是:有没有办法让我只直接子类实现一个方法(Bird
必须,但Sparrow extends Bird
类没有)?
编辑:我忽略了与我的模拟器相关的一些内容。我宁愿没有 3 个不同的列表来迭代并调用 move()
在他们。我想要一个ArrayList<Animal>
我可以用它来更新和绘图。
最佳答案
如果您实现move()
Bird
中的方法和Sparrow
不必更改它,那么您不必在 Sparrow
中实现它,它将按原样继承而无需重新实现它以仅调用 super.move();
。这就是继承的整个思想:在子类中,您可以重用父类(super class)中的代码,并且仅在行为与父类不同的情况下添加或重写方法。
关于java - 只有直接子类必须实现方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715266/