【问题标题】:Method hiding in Java [duplicate]隐藏在Java中的方法[重复]
【发布时间】:2023-03-29 11:25:01
【问题描述】:

可能重复:
Overriding vs Hiding Java - Confused

谁能用一个例子解释一下Java中的方法隐藏以及我们为什么要使用方法隐藏?

看了Oracle的教程,看不懂。

【问题讨论】:

  • 你能给我们一个具体的例子说明你在教程中不明白的地方,以及你对正在发生的事情的解释吗?
  • 方法隐藏到底有什么作用以及我们为什么使用它?
  • 方法隐藏 当您希望根据需要灵活调用超类方法或子类方法时,必须使用。当您的超类方法不需要执行时,使用 覆盖。也就是说,如果您认为,您的超类方法对您不再有用,并且您的子类方法满足所有要求,那么请使用方法覆盖。
  • 有问题的教程是this one,有点混乱。
  • 这听起来像是一些相当简单的面向对象原理的解释,但很难准确地说出您所说的“方法隐藏”是什么意思。私有方法?还有什么?你引用了一个教程,有没有可以给我们看的例子?

标签: java oop method-hiding


【解决方案1】:

当你在超类中有静态方法,如果你在子类中创建一个具有相同签名的方法,如果你使用超类引用,超类方法将被调用,如果你是子类方法,则被调用使用子类引用。

【讨论】:

  • 这是错误的——它不适用于静态,你不能隐藏静态方法,因为你也不能继承它。
  • @Romain:您可能想查看链接的教程。它本身说隐藏应用于静态(他们说“类方法”,而不是非静态“实例方法”)。可能是特定于 Java 的,但这就是他们使用这个词的方式。这与 C# 的 new 和 VB 的 Shadows 的工作方式一致,尽管它们(与 Java 不同)默认情况下使实例方法成为非虚拟方法。
猜你喜欢
  • 2015-05-31
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 2011-04-19
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多