Java类会继承静态方法吗

一、概述

我正在阅读Khalid Mughal撰写的Java™SCJP认证程序员指南

在“继承”一章中,它说明了

成员的继承与声明的可访问性紧密相关。如果超类成员可以通过子类中的简单名称来访问(不使用任何其他语法,如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();
    }
}

我如何直接在类B使用display()甚至更多,B.display()也可以。

这本书的解释仅适用于实例方法吗?

二、详解

子类继承了所有可访问的方法。

从Sun Java教程:

子类继承其父级的所有公共成员和受保护成员,无论该子类位于哪个包中。如果该子类与其父级位于同一包中,则它还将继承父级的包私有成员。您可以按原样使用继承的成员,替换它们,隐藏它们,或用新成员补充它们

继承的静态(类)方法和继承的非静态(实例)方法的唯一区别是,当您编写具有相同签名的新静态方法时,旧的静态方法只是隐藏的,不会被覆盖。

从页面上覆盖和隐藏之间的区别。

隐藏与覆盖之间的区别具有重要意义。被调用的重写方法的版本是子类中的版本。被调用的隐藏方法的版本取决于是从超类还是从子类调用

如若转载,请注明出处:https://www.javaidea.cn/article/8380.html

(0)
上一篇 2022年2月7日 上午10:03
下一篇 2022年2月7日 上午10:03

相关推荐

发表评论

您的电子邮箱地址不会被公开。