静态方法是在Java中继承的吗?我在读JavaSCJP认证程序员指南作者:Khalid Mughal。在继承一章中,它解释了成员的继承与其声明的可访问性密切相关。如果超类成员可以通过子类中的简单名称访问(而不使用任何额外的语法(例如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()也很管用。这本书的解释只适用于实例方法吗?
3 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
8.4.8继承、重写和隐藏
类C从其直接超类继承超类的所有具体方法m(包括静态方法和实例方法),对于这些方法,以下所有内容都是正确的:
M是C的直接超类的成员。
M是公共的、受保护的或声明的,在与C相同的包中具有包访问权限。
在C中声明的任何方法都没有作为m签名的子签名(§8.4.2)的签名。
狐的传说
TA贡献1804条经验 获得超3个赞
class A { public static void display() { System.out.println("Inside static method of superclass"); }}class B extends A { public void show() { display(); } public static void display() { System.out.println("Inside static method of this class"); }}public class Test { public static void main(String[] args) { B b = new B(); // prints: Inside static method of this class b.display(); A a = new B(); // prints: Inside static method of superclass a.display(); }}
添加回答
举报
0/150
提交
取消