我正在阅读 Khalid Mughal 的 A Programmer’s Guide to Java™ SCJP Certification 。
在继承章节中,它解释了
成员的继承与其声明的可访问性密切相关。如果超类成员在子类中可以通过其简单名称访问(无需使用任何额外的语法,如 super),则该成员被认为是继承的
它还提到静态方法不是继承的。但是下面的代码非常好:
class A
{
public static void display()
{
System.out.println("Inside static method of superclass");
}
}
class B extends A
{
public void show()
{
// This works - accessing display() by its simple name -
// meaning it is inherited according to the book.
display();
}
}
我怎样才能在课堂上直接使用 display()
B
?更重要的是, B.display()
也有效。
书上的解释只适用于实例方法吗?
原文由 Algorithmist 发布,翻译遵循 CC BY-SA 4.0 许可协议
所有可访问的方法都由子类继承。
来自 Sun Java 教程:
继承的静态(类)方法和继承的非静态(实例)方法的唯一区别是,当您编写具有相同签名的新静态方法时,旧的静态方法只是被隐藏,而不是被覆盖。
从 页面 上看覆盖和隐藏的区别。