我被要求这样做:
设计
并实现一个从Coin类派生的名为MonetaryCoin的类
在第5章中介绍。将一个值存储在代表其价值的货币硬币中
并为货币值添加getter和setter方法。
硬币类如下:
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();
}
}
但是,我不断收到语法错误...我没有正确使用“ super”吗?我完全感到困惑;我怎么了
最佳答案
不,您没有正确使用super()
。super()
调用超构造函数-在这种情况下,它将调用继承的Coin()
。由于Coin()
的Coin(int face)
内部没有构造函数,因此您的子类无法调用它。
有一些方法可以解决这个问题。我相信您需要运行setFace(face)
。这将正确初始化硬币的价值,我认为最适合您的问题。但是,您也可以将Coin(int face)
构造函数添加到Coin
类。但是,您还必须赋予Coin
一种保存值的方法。
关于java - 在Java中做什么与super?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16183093/