什么是OOP中的“Mutable类”?

时间:2010-08-24 07:11:55

标签: oop

标准类......它是否可变?

5 个答案:

答案 0 :(得分:12)

这在很大程度上取决于语言。其中一些甚至不允许可变对象。

许多主流语言默认是高度可变的,具体取决于您在类的公共接口上公开的成员。至少在几种主流语言(特别是动态语言)中,制作不可变对象真的很难。

有关详细信息,请参阅(im)mutable的定义:

  

在面向对象和函数式编程中,不可变对象是一个对象,其状态在创建后无法修改。这与一个可变对象形成对比,可以在创建后进行修改。

答案 1 :(得分:6)

可变类是可以在创建后更改其内部状态的类。

一般来说,除非特别努力使其不可变,否则一个类是可变的。

答案 2 :(得分:3)

可变类是具有可更改状态的类。 例如,如果你有一个代表数字Number的类,那么如果你可以做类似

的话,它就是可变的
Number num(4);
num.set(5);

即改变内部状态。

来自Wikipedia

  

在面向对象和函数式编程中,不可变对象是一个对象,其状态在创建后无法修改。这与可变对象形成对比,可变对象可在创建后进行修改。对象可以是完全不可变的,也可以声明对象中的某些属性是不可变的;例如,使用C ++编程语言中的const成员数据属性。

答案 3 :(得分:0)

“通常”(与通常的语言一样)它是可变的。

答案 4 :(得分:0)

类通常可变(尽管某些语言偏离此类)。另一方面,如果它们包含状态,那么从类创建的对象通常是可变的,并且您不需要特别注意防止任何人在创建对象后更改该状态。