如何覆盖子类中最后一个方法的javadoc?

Jai*_*Jai 5 java javadoc

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
    }
}
Run Code Online (Sandbox Code Playgroud)

我不需要更改最终方法的实现,我只是想为它更改Javadoc.

Gho*_*ica 7

简单地说:你做不到.如果有的话,你可以在该子类的定义中加入一些javadoc来解释那个最终方法的行为已被改变.如果你能做到这一点 - 你可以改变类上的javadoc 来说:"子类可能使这个方法无效"或类似的东西.

除此之外,你应该明白,这也是一个值得商榷的想法构思明智的.

继承主要不是代码重用.它是关于表达一些类A -B,因为A扩展B.所以当你决定使一个方法在子类上没有意义时,你基本上使超类的合同无效.这根本不是好的做法(请参阅Liskov替换原则,了解为什么在修改继承方法的合同时必须小心).

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

  • 特别是如果该方法被声明为"最终",则意味着没有子类通过重载它来解决它. (2认同)