在同一个类中创建类的对象的目的是什么?

时间:2014-02-07 17:24:54

标签: java

请考虑以下代码。为什么Test类的对象是在同一个类Test中创建的?对象ob1和ob2有什么区别吗?

class Test {
  int a;

  Test(int i) {
    a = i;
  }

  Test incrByTen() {
    Test temp = new Test(a+10);
    return temp;
  }
}

class RetOb {
  public static void main(String args[]) {
    Test ob1 = new Test(2);
    Test ob2;

    ob2 = ob1.incrByTen();
    System.out.println("ob1.a: " + ob1.a);
    System.out.println("ob2.a: " + ob2.a);

    ob2 = ob2.incrByTen();
    System.out.println("ob2.a after second increase: "
                        + ob2.a);
  }
}

1 个答案:

答案 0 :(得分:0)

显然存在差异:他们的数据成员具有不同的值。换句话说,虽然这些对象属于同一类,但它们处于不同的状态

incrByTen可以增加相同对象的值而不是创建新对象吗?的绝对

那么为什么还要回来一个新对象呢?这可能是以下原因之一:

  • 也许它只是在方法的上下文中有意义。例如,如果一个方法被称为makeACopy,那么你希望它创建一个同一个类的新对象,而不是返回原始对象。
  • 另一个原因是此类的对象意图是不可变的。如果其状态在创建后无法更改,则对象是不可变的。在这种情况下,对这样的对象的任何操作都不会修改原始对象,但它会从原始对象创建一个修改过的对象。一个很好的例子是String类 - 在字符串中追加字符串或替换序列不会改变原始字符串,但它会创建新的字符串。