max*_*max 2 java oop inheritance
我有两个类Apple和Orange这样:
public final class Apple{
int getJuice();
}
public final class Orange{
int getJuice();
}
Run Code Online (Sandbox Code Playgroud)
我无法改变它们.我有这样的第三类fruitsManeger:
class FruitManeger {
Apple apple;
Orange orange;
enum Fruits{
Apple,Orange
}
Fruits favorFruits;
int getJoice(){
if(favorFruits==Fruits.Apple){
apple.getJuice();
}else if(favorFruits==Fruits.Orange){
orange.getJuice();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:在FruitManeger类中实现getJuice方法的最佳方法是什么?
正如你所看到的,如果我有很多成果,我应该添加很多if else expiration.
当然,我可以使用反射来按名称调用方法,但是当getJuice方法返回一个对象而你想要做同样的事情时,这不是一个好主意.
有没有更好的方法?
ΦXo*_*a ツ 15
有没有更好的方法?
是的,将该应用程序重写为更加明确的方式......
记住:你不能修改Apple或Orange,但OOP允许你扩展这些类,因为它们不是最终的...
class CorrectApple extends Apple implement IJuiceble{
@Override
int getJuice();
}
class CorrectOrange extends Orange implement IJuiceble{
@Override
int getJuice();
}
Run Code Online (Sandbox Code Playgroud)
现在
interface IJuiceble{
int getJuice();
}
Run Code Online (Sandbox Code Playgroud)
最后经理:
class FruitManeger {
private CorrectApple apple;
private CorrectOrange orange;
int getJoice(IJuiceble correctfruit){
return correctfruit.getJuice();
}
}
Run Code Online (Sandbox Code Playgroud)