gpt4 book ai didi

java - 设计继承类

转载 作者:行者123 更新时间:2023-12-01 07:04:04 25 4
gpt4 key购买 nike

我正在阅读 J. Bloch 的《Effective Java》,现在正在设计继承部分的类。他描述了所谓的自用模式,据我所知,我们不能在其他可重写方法中使用可重写方法。

所以我的问题是如何让客户意识到 self 使用。我们是否应该像这样在 Javadocs 中明确提及它:

/**
* This class is self-use, thus it cannot be inherited.
*/

或者我们甚至应该拒绝自用的诱惑。

示例代码:我们应该像我上面描述的那样记录该类还是必须避免这种自用?

public class MyClass{

public void overrideMe(){
//something
ovMe();
}

public void ovMe(){
//some staff
}
}

最佳答案

正如您所说,自用是指一个可重写方法调用另一个可重写方法。例如,当 AbstractList.addAll调用AbstractList.add

确保扩展该类的任何人都知道这一点很重要。想象一下,您正在编写一个基于 AbstractList 的新列表实现 - 您需要知道是否需要重写 addAlladd,或者是否需要重写只需要重写add即可。

自用就好。 Joshua Bloch 所说的是,如果您使用它,则必须确保扩展该类的任何人都知道它

有多种方法可以满足此建议:

  • 您可以简单地避免自用。
  • 您可以将涉及的方法之一设置为 final,这样它就无法被覆盖。
  • 您可以将该类设为final,这样它就无法扩展。
  • 您可以在Javadoc注释中描述该类的自用模式(满足让其他人知道的要求)。

此外,为了避免可能的混淆,请注意Java 语言本身并不关心自用模式。编译器、JVM 或任何其他软件也不会。此建议纯粹是为了帮助可能使用您的代码的程序员(包括 6 个月后的您)。

关于java - 设计继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31110324/

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