我试图把事情放在"不变性"的定义中.
这里的第(3)项是作为创建不可变对象的规则之一,
不要允许子类重写方法.最简单的方法是将类声明为final....
重写的方法在子类的实例上运行.而且,据我所知,一个不可变类是一个对象在实例化后被"雕刻"在内存中的一个 - 它的成员都没有,因此对象不能被改变.
把这些放在一起 - "不可变"的定义是否适用于类和对象?通过最终确定方法,我阻止其方法在扩展类时被覆盖.我没有看到如何最终确定不可变类的方法进一步增加使其对象不可变.
如果您将类记录为不可变类,则此类的用户可以安全地假设此类的任何实例都是不可变的.
问题是如果你允许你的类被子类化,没有什么禁止子类添加可变状态和方法,甚至覆盖方法并使它们改变这个新状态.因此,该类用户的假设崩溃了.让课程最终成为不可能.
关键字的应用存在很大差异final。
器具...
文件: