如果我有以下代码
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
最佳答案
makeCan 只会返回 Can,因为这是它的返回类型,如下行所示:
public Can makeCan(String cont)
我假设 PromotionalCan 是 Can 的子类型,但我的第一个声明仍然成立 - makeCan 只会返回 Can 类型的对象。
关于java - 返回子类型作为父类(super class)型 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751558/