继承和多态如何与静态方法一起使用?有人可以解释一下这里的输出应该是什么以及它是如何导出的?
class A { public static int get() { return 17; } }
class B extends A { public static int get() { return 42; } }
Main
A x = new B();
x.get();
错误消息
应该以静态方式访问类型A中的静态方法get()
我想我知道如何以静态方式访问它,但这是一个来自类的问题,它暗示将返回一个或其他值
在我们的程序中,我们有类定义:
class A { public static int get() { return 17; } }
class B extends A { public static int get() { return 42; } }
以及我们声明A x = new B();
电话x.get()
会返回什么号码?
答案 0 :(得分:5)
调用将返回int
值17
。
static
方法不会被继承。
static
方法基于它们被调用的表达式的类型进行绑定和调用。
所以
x.get();
其中x
类型为A
,会调用A
的实现。另请注意,static
方法不需要调用实例。
这些也可以。
((A) null).get();
A.get();
...
public static A someMethod() {}
...
someMethod().get();
您收到的消息是警告,而不是错误。