具有getter和setter方法的Java对象

时间:2017-02-14 11:14:14

标签: java if-statement

嗨,有人可以帮助我,我是新手程序员,我不明白以下代码。

one.bark()如何在第一个if条件下自动返回语句。编译器如何知道要显示哪个if语句(因为我们在调用bark()时没有传递大小)?我知道该对象调用函数setSize并将参数70传递给它。这是否意味着值70成为对象one的一个属性?

代码:

class GoodDog {
    private int size;

    public void setSize(int s) {
        size = s;
    }

    public int getSize() 
    {
        return size;
    }

    void bark()
    {
        if (size > 60)
        {
            System.out.println("Wooof! Wooof!");
        } 
        else if (size > 14) 
        {
            System.out.println("Ruff! Ruff!");
        }
        else
        {
            System.out.println("Yip! Yip!");
        }
    }

}

class GoodDogTestDrive
{
    public static void main (String[] args) 
    {
        GoodDog one = new GoodDog();
        one.setSize(70);
        GoodDog two = new GoodDog();
        two.setSize(8);

        System.out.println("Dog one: " + one.getSize());
        System.out.println("Dog two: " + two.getSize());
        one.bark();
        two.bark();
    }

}

3 个答案:

答案 0 :(得分:1)

是。当您致电one.setSize(70)时,size变量会在70对象中保存为one。当您致电one.bark()时,size仍为70

答案 1 :(得分:0)

创建类的对象时,该对象会收到该类的所有非静态成员的副本。

GoodDog one = new GoodDog();

对象一个包含一个特殊的大小副本。像明智的对象两个将拥有自己的成员变量大小的副本。

使用setSize()函数设置大小时,一个对象的大小变量将被修改,并包含相同的值,直到分配了另一个值。

当你使用一个函数调用bark函数时,它会自己复制size变量并在bark函数中使用。

答案 2 :(得分:0)

实际上,70不是新属性,但size属性的值为70

由于GoodDog有两个不同的实例(Dog oneDog two),每个实例都有自己的属性size,它有自己的值(在这种情况下{{1} }和70)。

从那里,当您调用8方法时,每个实例(bark / one)将根据其自身属性的值(分别为{two}检查if/else语句{1}} / 70)。