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
}
}
}
但這不是我想要的.我想看到一個使用方法重載的解決方案.
總結
以上是生活随笔為你收集整理的java抽象类重载_在JAVA中使用一个抽象方法的重载方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HP服务器350g5怎么安装系统,HP
- 下一篇: python django图书管理系统_