Luc*_*che 1 java design-patterns bigdecimal
今天在我阅读有关BigDecimal类的一些文档时,我偶然发现了一个基本属性,BigDecimal类是不可变的.
我怎么能向祖母解释不变性概念?
班级不变性的利弊是什么?
扩展类可以变得可变吗?
考虑到我想用我的类扩展BigDecimal:
`MyBigDecimal extends BigDecimal`
Run Code Online (Sandbox Code Playgroud)
扩展是否违反了面向对象的基本设计原则?
我怎么能向祖母解释不变性概念?
检查这个问题:不可变的意思是什么
或者来自Effective Java:
不可变类是无法修改其实例的类.每个实例中包含的所有信息都在创建时提供,并在对象的生命周期内得到修复.
班级不变性的利弊是什么?
优点:
缺点:
扩展类可以变得可变吗?
是 - 这就是为什么不可变类应该是最终的(或者,使所有构造函数都是私有的,并提供工厂来创建新对象).
BigDecimal是创建不可变类时不应该做的事情的一个很好的例子(它可以扩展,这可能会导致你在问题中提到的问题).