面向对象的编程,方法调用不能按预期工作,子类

时间:2015-05-15 00:01:04

标签: java oop object methods extends

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

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...");
}

当我创建它时,我设置了宠物'canMakeNoise布尔值:猫a =新猫(“小动物”,“喵”,真);

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

"<b>" & Fields!PRODNAME.Value "</b>" & vbcrl
Fields!ADDRESS.Value & vbcrlf &
Fields!CITY.Value + " ," + Fields!STATE.Value & vbcrlf &
Fields!PINCODE.Value & vbcrlf &

}

4 个答案:

答案 0 :(得分:3)

看起来像&#34; canMakeNoise&#34;在构造函数中反转,即分配canmakenoise = pcanmakenoise

答案 1 :(得分:0)

更改此行

pcanmakenoise = canMakeNoise;

canMakeNoise = pcanmakenoise;

答案 2 :(得分:0)

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

pcanmakenoise = canMakeNoise;

答案 3 :(得分:0)

默认布尔值为false。

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

否则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