“那是什么意思?”;在java中,我们在运行时更改任何对象的行为;

“那是什么意思?”;在java中,我们在运行时更改任何对象的行为;,java,runtime,Java,Runtime,我正在阅读,Oriely设计模式,其中有一行“我们可以改变 运行时的任何对象“&如何使用getter和setter在运行时更改对象的行为 行为就是对象的工作方式。运行时是应用程序的生命周期。所以那个语句意味着在程序运行期间,我们能够操纵对象可以做什么 要进行模拟,请参见以下示例: public class MyObjectTest { public static final void main(String[] args) { MyObject myObject = new MyO

我正在阅读,Oriely设计模式,其中有一行“
我们可以改变

运行时的任何对象
“&如何使用getter和setter在运行时更改对象的行为

行为就是对象的工作方式。运行时是应用程序的生命周期。所以那个语句意味着在程序运行期间,我们能够操纵对象可以做什么

要进行模拟,请参见以下示例:

public class MyObjectTest {

  public static final void main(String[] args) {

   MyObject myObject = new MyObject(); 

   String theMessage = "No message yet.";

   theMessage = myObject.readSecretMessage();

   myObject.setIsSafe(true);

   theMessage = myObject.readSecretMessage();

  }
}


public class MyObject {

 private boolean isSafe = false;


 public boolean isSafe() {
    return this.isSafe;
 } 

 public boolean setIsSafe(boolean isSafe) {
   return this.isSafe = isSafe;
 }

 public String readSecretMessage() {

   if(isSafe()) {
    return "We are safe, so we can share the secret";
   }
   return "They is no secret message here.";
 }
}
分析:

程序将返回两条不同的消息,决定取决于字段
isSafe
。可以在运行时的对象生命周期(对象生命周期从运算符
new
开始)期间修改


这意味着,我们可以改变物体的行为

从表面上看,它毫无意义,或者至少是不正确的。您可以更改对象的属性,但不能更改其行为(当然,除非其行为取决于其属性的值)。您必须提供更多的上下文来理解这一点。

让我在运行时交替用2条腿和4条腿行走猫:)。。基本上,这意味着您可以在运行时使用getter和setter更改Cat的行为

class Cat
{
    int legs = 2;

    public void walk() {
       System.out.println("Walking on " + legs + " legs");
    }

    public int getLegs()
    {
       return legs;
    }

    public void setLegs(int legs)
    {
       this.legs = legs;
    }
}

public void static main()
{
     Cat c = new Cat();
     c.setLegs(4);
     c.walk();

     c.setLegs(2);
     c.walk();
}

它还说了什么?您能提供更多与这一行相关的上下文吗?我们能说MyObject类是一种“有状态类”吗?