<分区>
在我的项目中,我有一个包含几个抽象方法的抽象类。现在多个其他类扩展了该抽象类。并不是所有的类都想重写抽象类的所有方法,因为那对它们没有用。我如何在对类无用的子类中提供这些方法的默认实现? 示例-:
public abstract class Animal
{
public void Action()
{
.....
this.roar();
}
public abstract void roar();
public abstract void run();
}
上面是抽象类,它将具有子类将实现的抽象方法。
public class Lion extends Animal
{
@Override
public void roar()
{
s.o.p("Lion roars");
}
@Override
public void run()
{
s.o.p("Lion runs");
}
}
public class Deer extends Animal
{
@Override
public void roar()
{
// Question : What should I do here?
}
@Override
public void run()
{
s.o.p("Deer runs");
}
}
编辑-:
感谢您的建议,我理解拥有另一个类的想法,该类可以具有不常见的方法(在这种情况下为“咆哮”)。但是我的项目结构有点不同,它有点遗留代码,其中有许多子类从 Animal 类扩展。子类调用具体方法,具体方法又调用抽象方法(本例中为“roar”,请参阅更新后的 Animal 类,具体方法为“Action”)。 现在按照你的建议,如果我创建另一个抽象类
public abstract RoaringAnimal extends Animal
{
public abstract void roar();
}
这将解决其中一个问题,因为我现在可以扩展 RoaringAnimal 而不是 Animal 而其他调用 Animal.Action 方法的类,它们不会在 Animal 中找到 roar() 的实现并且 javac 会提示。