在面向对象程序设计中,不可变对象是指在创建后属性不能更改的对象。相比之下,大多数对象是可变对象,这意味着它们的某些或全部属性在创建后可以自由更改。各种计算机语言都能创建不可变对象,包括Java、C、erlang、Tcl和sc...
在面向对象程序设计中,不可变对象是指在创建后属性不能更改的对象。相比之下,大多数对象是可变对象,这意味着它们的某些或全部属性在创建后可以自由更改。各种计算机语言都能创建不可变对象,包括Java、C、erlang、Tcl和scala。在计算机编程方面,不可变对象是指其属性在创建后不能更改的对象。可以通过以下两种方法之一创建不可变对象:创建定义为不可变的类或显式声明其他可变对象为不可变对象。创建不可变类的方法取决于使用的计算机语言。不管是哪种语言,一个不可变类必须没有可以更改其内部数据的方法,也不能以更改其内部数据的方式更改方法(即重写或重载)。这是两种方法中比较复杂的一种。另一方面,要从其他可变对象创建不可变对象,通常可以用关键字将对象指定为不可变的,例如Java中不可变对象的创建很大程度上依赖于“final”关键字,Java中使类不可变的一个快速方法是声明该类及其所有方法和数据成员,最后。类似的策略也可以在C中使用“const”关键字。但是,根据类内容的不同,这些方法可能不是最好的方法。一般来说,通过仔细维护对象的内部数据,通常可以使对象不可变。使用关键字(如上面的示例)创建不可变的对象通常是非常多的比编写一个不可变的整个类容易,但是使用这种方法也有其危险性当以这种方式显式地指定一个不可变的对象时,程序员必须首先确保所有适当的属性和数据都已被合并到该对象中,尤其是当它缺少一个重要的信息时。如果一个对象是可变的,但是需要正确地创建不可变的数据,那么在创建可变对象之前,必须先初始化不可变的数据。不可变的对象总是不可变的,无论它们是数据值还是大对象,通常情况下,一个不可变的对象在创建之后就不能变为可变的,尽管有时它们可能被复制为可变对象。通常可以假定一个不可变对象及其任何副本也是不可变的,这可以防止数据或内存问题
-
发表于 2020-08-06 20:38
- 阅读 ( 839 )
- 分类:电脑网络