【问题标题】:What is a "Mutable class" in OOP?什么是 OOP 中的“可变类”?
【发布时间】:2011-04-03 00:33:07
【问题描述】:

标准类...是否可变?

【问题讨论】:

  • 什么是“标准类”?
  • 无产阶级?
  • 无产阶级。好一个 :-) 也许标准课程是规范的 OO 教学课程之一,例如 VehicleAnimal
  • @Merlyn, looooooool, 无产阶级,我笑得把咖啡洒了。
  • 我在想 stanard = 通用基类?或不带关键字使可变/不可变(即默认)

标签: oop


【解决方案1】:

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

许多主流语言默认是高度可变的,这取决于您在类的公共接口上公开的成员。至少在一些主流语言(尤其是动态语言)中,制作不可变对象真的很困难。

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

在面向对象和函数式编程中,不可变对象是其状态在创建后无法修改的对象。这与 可变对象 不同,后者在创建后可以修改。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      Number num(4);
      num.set(5);
      

      即改变内部状态。

      来自Wikipedia

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2016-06-16
            • 1970-01-01
            • 2015-05-25
            • 1970-01-01
            • 1970-01-01
            • 2012-02-22
            • 1970-01-01
            • 2017-10-27
            • 1970-01-01
            相关资源
            最近更新 更多