gpt4 book ai didi

java - Java 中类的“final”修饰符

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:27:50 24 4
gpt4 key购买 nike

我有一个快速而简单的问题。我习惯于将每一节课都设为“最后一节课”,当然,除非它需要由另一节课扩展。

这是坏习惯吗?好习惯?这有关系吗?我了解修饰符对类的影响。

提前致谢!

编辑:这是一个示例代码。此类不会被任何其他类扩展。

public final class Application {

/**
* Starts the application.
*
* @param arguments arguments provided from command-line
*/
public static void main(String[] arguments) {
LaunchUtilities util = new LaunchUtilities(new EventHandler());

try {
util.addListener(43594);
} catch (IOException ioe) {
Logger.getLogger(Application.class.getName()).log(Level.SEVERE, "Could not bind a port to a listener!", ioe);
}

util.start();
}
}

最佳答案

程序员(甚至 Java 专家)对此持不同意见。

Josh Bloch 设计了 ​​Java Collections 库,java.Math,assert,并且是 Google 的首席 Java 架构师(或者在他们雇用 Gosling 之前)在他的书“Effective Java ”专门针对这个问题。我同意他所说的:

Item 17: Design and document for inheritance or else prohibit it

他指出,子类化不是为它设计的通常会导致灾难。

此外,为继承而设计的成本很高。

  1. 它对你的类(class)可以做什么有很大的限制
  2. 您必须编写更多文档,以便子类作者了解该类内部如何使用公共(public)方法
  3. 你必须测试它。这需要测试编写子类

您可以随时改变主意并制作非最终版的东西。你不能让一些过去不是最终的东西成为最终的。

阅读“Effective Java”,它使这个论点更有说服力。它还将使您成为更好的程序员。

关于java - Java 中类的“final”修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6905825/

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