有什么特别的原因,我应该在日常的编程(网页或其他)中声明一个类或一个方法最终的?请提供一个现实世界的例子,应该使用它.
BTW,因为我正在尝试pick an ‘obscure’ keyword and master it.
它阻止其他程序员做你不想要他们做的课程的东西.所以,不要发表评论,说“不要使用这个类来做XXX”,所以你可以设计它,以免他们以这种方式来改写它,并以这种方式滥用它.
编辑:由于请求了一个例子,我将描述一个你可能会发现这个关键字方便的情况…说你有一个类定义两个对象如何相互通信,比如一个监听器和通知器.监听器类必须显然允许继承,但是您可能希望使通知程序类final,以便必须在“has-a”关系中使用.这样,您可以从侦听器对象中获取有关其接收的消息的性质的假设.
否则,可以从该类继承,执行各种疯狂的东西,如扩展消息等等.如果你不想让其他程序员做到这一点,那么你可以让班级决赛.此外,这在广泛使用的公共API中可能会更有意义,因为它还允许其他程序员轻松了解哪些类可以进行子类化.
另一个例子 – 假设你有一个基于缓冲区的流处理器,并且在你的read()/ write()方法之内,你可以保存一些有关当前对象的状态的数据(即当前字节或任何内容).没有办法保证任何子类化这个类的任何人都可以在处理过程中调用super的方法 – 而且由于这样一个类可能只包含几个方法,所以最好只是把整个事情做成最后的而不是每个方法.这再次迫使人们使用类“has-a”而不是“is-a”,因此可以控制你期望代码执行的方式.