继承和多态性如何与静态方法一起工作?有人可以解释一下正确的输出应该是什么以及它是如何导出的吗?
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();
错误消息,
The static method get() from the type A should be accessed in a static way
我想我知道如何以静态方式访问它,但这是类里面的一个问题,它暗示将返回一个或其他值
在我们的程序中,我们有类定义:
class A { public static int get() { return 17; } }
class B extends A { public static int get() { return 42; } }
在其他地方我们声明A x = new B();
调用x.get()
会返回什么数字?
最佳答案
调用将返回 int
值 17
。
静态
方法不被继承。
静态
方法根据调用它们的表达式的类型进行绑定(bind)和调用。
所以
x.get();
其中 x
的类型为 A
,调用 A
的实现。另请注意,静态
方法不需要调用实例。
这些也可以。
((A) null).get();
A.get();
...
public static A someMethod() {}
...
someMethod().get();
您收到的消息是警告,而不是错误。
关于java - 静态方法继承和多态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23002754/