为什么我们不能覆盖私有和最终方法?

时间:2015-03-04 15:29:37

标签: java private final

为什么我们可以使用与私有方法相同的签名方法,但我们不能覆盖它

我不明白为什么我们不能覆盖私有方法但我们可以制作另一种相同签名方法 我认为它们是一样的。

2 个答案:

答案 0 :(得分:4)

final关键字旨在禁止任何人覆盖某个方法。如果您的类依赖于该方法的特定实现,则可以将方法标记为final,以防止其他代码破坏您的类。

私有方法仅对其所属的类可见。因此,子类不能覆盖私有方法:子类不知道超类中已存在相同签名的方法。

答案 1 :(得分:2)

也许这可以解释它

您有两个扩展StackOverflow

的类StackOverflowA

您看到两个类如何具有相同的private String myStackOverflow()签名?

此方法独立于每个类,无法在其自己的类之外访问(因此private关键字)。

hello() <{1}}

的情况并非如此

public可以看到它(因为它是A的扩展名),并且可能(或可能不会)覆盖它。

StackOverflow