gpt4 book ai didi

php - 我什么时候应该使用 "final"?

转载 作者:行者123 更新时间:2023-12-02 03:36:44 26 4
gpt4 key购买 nike

在日常编程(Web 或其他方式)中,我应该将类或方法声明为 Final 是否有任何特殊原因?请提供一个应该使用它的真实示例。

顺便说一句,我问是因为我想 pick an 'obscure' keyword and master it .

最佳答案

它可以防止其他程序员对您的类执行您不希望他们执行的操作。因此,与其发表评论说“不要使用此类来执行 XXX”,您可以以这样的方式设计它,使他们不会试图以这种方式覆盖它并滥用它。

编辑:由于需要一个示例,我将描述一个您可能会发现这个关键字很方便的情况...假设您有一个类定义两个对象如何相互通信,比如说,监听者和通知者。监听器类显然必须允许继承,但您可能希望将通知器类设置为最终类,以便它必须以“has-a”关系使用。这样,您就可以从监听器对象中对它们接收的消息的性质做出一些假设。

否则,就有可能从该类继承,做各种疯狂的事情,比如扩展消息等等。如果您不希望其他程序员这样做,那么您可以将该类设为最终类。此外,这在广泛使用的公共(public) API 中可能更有意义,因为它还允许其他程序员轻松理解哪些类可以进行子类化。

另一个例子 - 假设您有一个基于缓冲区的流处理器,并且在 read()/write() 方法内部,您维护一些有关对象当前状态的数据(即当前字节或其他内容) 。没有办法保证任何子类化这个类的人都会在处理过程中调用 super 方法——并且由于这样的类可能只包含几个方法,所以最好将整个方法定为 final方法,而不是每个方法。这再次迫使人们使用该类“has-a”,而不是“is-a”,因此可以控制您期望代码的执行方式。

我同意你的观点,将整个最终化可能是你千载难逢的事情,但是如果你选择的话,PHP 具有这种功能是很好的锻炼一下。

关于php - 我什么时候应该使用 "final"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com