如果我有以下代码
public class Can
{
...
public Can makeCan(String cont)
{ boolean winner = false;
Can a;
if(turn)
{ winner = true;
a = new PromotionCan(cont,winner);
}
else
{ a = new Can(cont);
}
return a;
}
...
}
首先,这是可能的,因为它编译得很好。但我无法使用PromotionalCan
中的方法执行操作:
public class PromotionCan extends Can
{
...
public boolean isWinner() throws NotEmptyCanException
if(win)
{ System.out.println("Can is winner");
return win;
}
else
{ System.out.println("Can is not winner");
return win;
}
}
...
}
makeCan
不会同时返回Can
和PromotionalCan
吗?如果是这样,当返回PromotionalCan
时如何操作变量?感谢。
编辑:
PromotionalCan
继承自Can
,第二种方法位于PromotionalCan
答案 0 :(得分:2)
makeCan只会返回一个Can,因为这是它的返回类型,如下所示:
public Can makeCan(String cont)
我假设PromotionalCan是Can的子类型,但我的第一个语句仍然存在 - makeCan将只返回Can类型的对象。