隐藏在java中的方法的好处

时间:2012-08-22 12:11:51

标签: java override method-hiding

我已经阅读了Java中的方法隐藏概念,但我不确定我是否理解其优点。方法隐藏在哪些情况下有用?

2 个答案:

答案 0 :(得分:4)

您可以在此处阅读更多内容http://docs.oracle.com/javase/tutorial/java/IandI/override.html

简而言之,好处是您可以在子类中实现静态方法,该子类与超类中的静态方法具有相同的签名。如果你不能这样做,你就无法将这些方法添加到子类中,如果你将这样的方法添加到超类中,它的所有子类都将无法编译。

顺便说一句:你可以制作一个静态的方法,不要让它成为最终的隐藏。

class Superclass {
    public static final void method() { }
}

class Subclass extends Superclass {
    public static void method() { } // doesn't compile
}

允许隐藏方法,可以将其设为非最终

class Superclass {
    public static void method() { }
}

答案 1 :(得分:3)

这没有“好处”,它只是语言规范如何决定处理相关类的静态方法碰巧具有相同签名时的情况。语言设计者没有找到提供“覆盖”功能 1 的合理方法,因此他们采取了简单的方法。

<小时/> 1 有一种方法可以使静态方法的覆盖在抽象的OO级别上工作,这可以通过在Objective-C中完成的方式来证明。但是,另一种选择更难理解。