200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java抽象类重载_在JAVA中使用一个抽象方法的重载方法

java抽象类重载_在JAVA中使用一个抽象方法的重载方法

时间:2022-07-11 14:21:56

相关推荐

java抽象类重载_在JAVA中使用一个抽象方法的重载方法

给出一个抽象类

public abstract class AbstractStomach {

public abstract void consume(Food food);

}

我想要一些具有不同重载方法的具体类:

public class FruitStomach extends AbstractStomach {

public static class Apple extends Food {}

public static class Orange extends Food {}

@Override

public void consume(Apple food) {...}

@Override

public void consume(Orange food) {...}

}

public class MeatStomach extends AbstractStomach {

public static class Beef extends Food {}

@Override

public void consume(Beef food) {...}

}

上面的代码不起作用,因为它迫使我在每个具体类中实现泛型消费(Food)抽象方法.

但是我不希望具体的类实现消费(食物),因为它们已经由它们的重载变体来处理,实际上,每个具体的类应该只消耗不同的特定食物,而不是任何食物,所以

AbstractStomach stomach = new FruitStomach();

stomach.consume(new Beef());

应该给出错误.

如果我在抽象类中删除抽象方法,那么就没有必要让它们扩展抽象类,因为它没有为它们提供实现的指导.

你如何修复上面的设计,以便每个具体的类可以有他们的重载方法,但他们知道有一个抽象方法consume()来实现,但不需要实现consume(Food).

编辑

我可以在不使用重载的情况下解决上述问题,例如

public class FruitStomach extends AbstractStomach {

public static class Apple extends Food {}

public static class Orange extends Food {}

@Override

public void consume(Food food) {

if (food instanceof Apple) {

...

} else if (food instanceof Orange) {

...

} else {

// throws an error

}

}

}

但这不是我想要的.我想看到一个使用方法重载的解决方案.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。