更改对象的状态是否会导致更改其行为?

时间:2017-09-03 11:47:17

标签: java oop

我在OOP中有一个普遍的问题,即如果我们改变对象的状态,那会改变对象的行为吗?

public class Test{
    private int x;
    private string y;

    public Foo(int bar, string baz)
    {
        x = bar;
        y = baz;
    }

    public void ChangeBar(int newBar)
    {
        x = newBar;
    }
}

例如:

var obj = new Test (5, "yyy");

如果我将y值更改为"www",这是否意味着obj的行为发生了变化?

2 个答案:

答案 0 :(得分:1)

这完全取决于对象的行为是否依赖于其状态。有时它是。其他时候不是。例如,Test类的对象实际上没有任何行为,我看不到任何依赖于状态的对象。非常的其他类具有依赖于状态的行为。

答案 1 :(得分:0)

在您的示例中,您不会更改obj的行为。 你会改变它的财产。 只有在更改功能时才能更改行为。 如果您想要对象的不同行为,您可以,例如,在ChangeBar函数中添加if语句,然后该对象将根据具体情况进行操作。

public void ChangeBar(int newBar)
{
    if (newBar < 0)
    {
       x = newBar;
       \\ and do something
    }
    else
    {
       x = 0;
       \\ and do something else
    }
}

我希望这能回答你的问题。