Java 中的静态方法继承
在 Java 中,“Java™ SCJP 认证程序员指南”中概述的继承规则适用例如方法。可访问的实例方法由子类继承。然而,本书的解释没有考虑静态方法在继承中的独特行为。
静态方法,顾名思义,属于类而不是实例。它们可以通过类名访问,无论哪个子类正在访问它们。此特性导致实例方法偏离标准继承规则。
当子类从其超类继承静态方法时,它不会替换或覆盖该方法。相反,原始静态方法在子类中仍然可以访问。这与实例方法相反,实例方法可能发生重写。造成这种差异的原因是静态方法与整个类相关联,而不是与单个实例相关联。
在提供的示例代码中,类 B 可以访问其超类 A 的 display() 静态方法,使用简单名称 display() 或完全限定名称 B.display()。这两种方法都是有效的,因为静态方法被继承并成为类 B 自己的方法集的一部分。
值得注意的是,在 Sun Java 教程中,明确指出子类继承其所有公共和受保护成员父级,包括静态(类)方法。继承的静态方法和非静态方法之间的区别在于它们在子类中定义具有相同签名的新方法时的行为。虽然可以重写非静态方法,但静态方法是隐藏的。这意味着从子类内部调用时,子类中的新静态方法将优先,但从超类调用时,原始静态方法仍然可访问。
以上是Java 中静态方法继承与实例方法继承有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!