use*_*135 2 java polymorphism inheritance static-methods
继承和多态如何与静态方法一起使用?有人可以解释一下这里应该是什么样的输出以及它是如何导出的?
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();
Run Code Online (Sandbox Code Playgroud)
错误消息,
应该以静态方式访问类型A的静态方法get()
我想我知道如何以静态方式访问它,但这是一个来自类的问题,它暗示将返回一个或另一个值
在我们的程序中,我们有类定义:
class A { public static int get() { return 17; } }
class B extends A { public static int get() { return 42; } }
Run Code Online (Sandbox Code Playgroud)
以及我们宣布的其他地方 A x = new B();
电话会x.get()回来几号?
调用将返回int值17.
static 方法不是继承的.
static 方法是根据调用它们的表达式的类型绑定和调用的.
所以
x.get();
Run Code Online (Sandbox Code Playgroud)
x类型A调用A的实现在哪里.另请注意,static方法不需要调用实例.
这些也可以.
((A) null).get();
A.get();
...
public static A someMethod() {}
...
someMethod().get();
Run Code Online (Sandbox Code Playgroud)
您收到的消息是警告,而不是错误.