有人问我这样做:在java中如何处理超级?
设计 和实施一个名为MonetaryCoin类是从第5章中介绍的硬币类 派生Store中的货币硬币代表它的价值 并添加值获取和设置方法的货币价值。
币类如下:
public class Coin
{
public final int HEADS = 0;
public final int TAILS = 1;
private int face;
// ---------------------------------------------
// Sets up the coin by flipping it initially.
// ---------------------------------------------
public Coin()
{
flip();
}
// -----------------------------------------------
// Flips the coin by randomly choosing a face.
// -----------------------------------------------
public void flip()
{
face = (int) (Math.random() * 2);
}
// ---------------------------------------------------------
// Returns true if the current face of the coin is heads.
// ---------------------------------------------------------
public boolean isHeads()
{
return (face == HEADS);
}
// ----------------------------------------------------
// Returns the current face of the coin as a string.
// ----------------------------------------------------
public String toString()
{
String faceName;
if (face == HEADS)
faceName = "Heads";
else
faceName = "Tails";
return faceName;
}
}
我想出了这一点:
public class MonetaryCoinHW extends Coin
{
public MonetaryCoinHW(int face)
{
setFace(face);
}
public int getFace()
{
if (isHeads()) {
return HEADS;
}
return TAILS;
}
public void setFace(int newFace)
{
while (newFace != getFace()) {
flip();
}
}
不过,我不断收到语法错误......我不是用“超级”是否正确?我完全困惑;我的错误是什么?
当你尝试调用它时,你错过了超类Coin中的相应构造函数。 Coin(int face){...} http://docs.oracle.com/javase/tutorial/java/IandI/super.html – Drogba 2013-04-24 03:58:59
根据你的问题陈述,我不明白你为什么想要结合硬币中的面部变量:表示硬币是正面还是反面,以及MonetaryCoin的值。超类Coin没有任何价值的概念,因为这是MonetaryCoin存在的全部原因。显然,MonetaryCoin需要一个单独的“价值”属性。 – 2013-04-24 04:15:34
请不要编辑你的问题,让新来者失去你所问的内容。显然,在你的原始代码中,你有类似'super()'但你现在删除了它。你如何期待其他人知道你在问什么? – 2013-04-24 05:02:29