【问题标题】:Object Oriented Programming, Method Call Not Working as Expected, Subclasses面向对象编程,方法调用未按预期工作,子类
【发布时间】:2015-05-15 00:01:04
【问题描述】:

我在调用 Pets 类中的方法 makeNoise 时遇到问题。我通过另一个类 Humans 调用 makeNoise 方法,该类具有 makePetMakeNoise 方法:

public void makePetMakeNoise()
{
    int randnum = (int)(Math.random() *5);
    pet.makeNoise(randnum);
}

我在创建宠物时将它的 canMakeNoise 设置为布尔值:Cat a = new Cat("Critter", "Meow", true);

当我调用 Humans 的 makePetMakeNoise 方法时,我只得到如下打印输出:Critter 保持沉默 而不是:Meow Critter。为什么会这样,我该如何解决?谢谢。


public class Pets  
{
    String name;
    String noise;
    boolean canMakeNoise;
    public Pets(String pname, String pnoise, boolean pcanmakenoise)
{
    name = pname;
    noise = pnoise;
    pcanmakenoise = canMakeNoise;
}

public void makeNoise(int number)
{
    if(canMakeNoise==true)
    {
        for(int i=0; i<number; i++)
        {
            System.out.println(noise + " " + name);
        }
    }
    else if(canMakeNoise==false)
    {
        System.out.println(name + " *remains silent*");
    }
}

public void eat()
{
        System.out.println(name + " is eating...");
}

}

【问题讨论】:

    标签: java oop object methods extends


    【解决方案1】:

    看起来构造函数中“canMakeNoise”的赋值是相反的,即赋值canmakenoise = pcanmakenoise

    【讨论】:

      【解决方案2】:

      更改此行

      pcanmakenoise = canMakeNoise;

      canMakeNoise = pcanmakenoise;

      【讨论】:

        【解决方案3】:

        您为构造函数参数 pcanmakenoise 分配了当前为 null 的 canMakeNoise 值。

        pcanmakenoise = canMakeNoise;

        【讨论】:

          【解决方案4】:

          默认布尔值为 false。

          canMakeNoise 总是假的;因此,总是调用以下条件。

          else if(canMakeNoise==false)

          参考::

          https://msdn.microsoft.com/en-us/library/83fhsxwc.aspx

          https://www.google.com/search?q=c%23+default+boolean+value&ie=utf-8&oe=utf-8

          【讨论】:

            猜你喜欢
            • 2013-04-13
            • 2013-07-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-08
            • 2021-05-01
            • 2019-04-22
            • 2015-01-28
            相关资源
            最近更新 更多