我被要求这样做:


  设计
  并实现一个从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/

10-10 13:19