在java中如何处理super?

在java中如何处理super?,java,inheritance,Java,Inheritance,我被要求这样做: 设计 并实现一个名为MonetaryCoin的类,该类派生自Coin类 第5章介绍。在货币硬币中存储代表其价值的值 并为货币值添加getter和setter方法 硬币类别如下: public class Coin { public final int HEADS = 0; public final int TAILS = 1; private int face; // ---------------

我被要求这样做:

设计 并实现一个名为MonetaryCoin的类,该类派生自Coin类 第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()

public Coin(int face) {
    this.face = face;
}
super()
调用超级构造函数-在本例中,它将调用继承的
Coin()
。由于
Coin(int-face)
Coin()中不存在构造函数,因此子类无法调用它


有很多方法可以解决这个问题。我相信您需要运行
setFace(face)
。这将正确初始化硬币的价值,我认为最适合你的问题。但是,您也可以将
Coin(int-face)
构造函数添加到
Coin
类中。您还必须为
硬币提供一种保存值的方法。

不,您没有正确使用
super()

public Coin(int face) {
    this.face = face;
}
super()
调用超级构造函数-在本例中,它将调用继承的
Coin()
。由于
Coin(int-face)
Coin()中不存在构造函数,因此子类无法调用它


有很多方法可以解决这个问题。我相信您需要运行
setFace(face)
。这将正确初始化硬币的价值,我认为最适合你的问题。但是,您也可以将
Coin(int-face)
构造函数添加到
Coin
类中。不过,您还必须为
Coin
提供一种保存值的方法。

类Coin需要具有以下构造函数才能使子类正常工作

public Coin(int face) {
    this.face = face;
}

这将解决问题super(face)。

类coin需要具有以下构造函数才能使子类正常工作

public Coin(int face) {
    this.face = face;
}

这将解决超级(面部)问题。

不,您没有正确呼叫超级。 您需要有一个参数为int的coin构造函数。 i、 e


不,你打得不对。 您需要有一个参数为int的coin构造函数。 i、 e


任一

从类中删除
super(face)
MonetaryCoinHW
。和简单的调用setFace(face)。但是还要注意,face变量是在您的超类中定义的私有变量,因此您无法访问它

默认情况下,它将调用超类的无参数构造函数。

定义
Coin(int-face)
类中的构造函数
Coin


如果您想做一些不同的事情,只需要在Coin类中定义特殊构造函数。

或者

从类中删除
super(face)
MonetaryCoinHW
。和简单的调用setFace(face)。但是还要注意,face变量是在您的超类中定义的私有变量,因此您无法访问它

默认情况下,它将调用超类的无参数构造函数。

定义
Coin(int-face)
类中的构造函数
Coin


如果您想做一些不同的事情,您只需要在Coin类中定义特殊构造函数。

当您尝试调用它时,您在super类Coin中错过了相应的构造函数。Coin(int face){…}基于您的问题陈述,我不明白您为什么要尝试将Coin中的face变量与MonetaryCoin的值进行耦合:表示硬币是正面还是反面。超类硬币没有任何价值的概念,因为这就是货币币存在的全部原因。因此,MonetaryCoin显然需要一个独立的“价值”属性。请不要编辑您的问题,以免新来者丢失您所询问的内容。显然,在您的原始代码中有类似于
super()
的内容,但您现在删除了它。你怎么期望其他人知道你在问什么呢?当你试图调用它时,你在你的超级类硬币中错过了一个相应的构造函数。Coin(int face){…}基于您的问题陈述,我不明白您为什么要尝试将Coin中的face变量与MonetaryCoin的值进行耦合:表示硬币是正面还是反面。超类硬币没有任何价值的概念,因为这就是货币币存在的全部原因。因此,MonetaryCoin显然需要一个独立的“价值”属性。请不要编辑您的问题,以免新来者丢失您所询问的内容。显然,在您的原始代码中有类似于
super()
的内容,但您现在删除了它。你怎么能指望别人知道你在问什么?好吧,那我该怎么做呢,因为我完全迷路了,我在过去的一、两年里一直在文学地研究这个问题。所以为了存储一个值,我必须创建一个全新的变量并执行如下操作:公共类MonetaryCoinHW扩展Coin{private int value;公共MonetaryCoinHW(int value){this.value=value;}public int getFace(){return value;}public void setFace(int face){value=face;}对不起,我只是完全不知道该做什么是的,那正是你需要做的。
Coin
的实现需要一个变量来保存硬币的价值。然后,你可以在构造器中使用
setFace
来初始化硬币的正面。好的,那么我该怎么做呢,因为我完全迷路了,我在过去的一两个小时里一直在研究这个问题。所以为了存储一个值,我必须创建一个全新的v