gpt4 book ai didi

java - 如何覆盖子类中 final方法的 javadoc?

转载 作者:搜寻专家 更新时间:2023-11-01 01:31:48 24 4
gpt4 key购买 nike

public class BaseClass {
/**
* Gets the value.
*/
public final String getValue() {
// returns something.
}
}

public class SubClass extends BaseClass {
/**
* Gets the value.
* <p/>
* The value is meaningless for SubClass.
*/
@Override // Cannot override final method
public final String getValue() {
super.getValue(); // Not overriding implementation, just javadoc
}
}

我不需要改变final方法的实现,我只想改变它的Javadoc。

最佳答案

简单地说:你不能那样做。如果有的话,您可以在该子类的定义中放置一些 javadoc 来解释该 final方法的行为已更改。如果你能做到这一点——你可以将 base 类上的 javadoc 更改为:“子类可能会使此方法无效”或类似的内容。

除此之外,您应该明白这也是一个有问题的想法。

继承主要不是关于代码重用。它是关于表达某个类 A 是一个 B,因为 A 扩展了 B。所以当你决定在子类上使一个方法无意义时,你基本上是在使 super 类的契约(Contract)。这根本不是好的做法(请参阅 Liskov substitution principle 了解为什么在修改继承方法的契约时必须小心)。

你看,final 关键字不仅是编译器的信息。它还表达了将其用于该方法的人的意图。这个人说:“我不希望子类脾气用这个方法!”

关于java - 如何覆盖子类中 final方法的 javadoc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45141618/

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