【发布时间】:2015-09-29 13:43:09
【问题描述】:
我有这个代码:
class Super{
public static List<Super> methodA() { . . . }
}
class Sub:Super{
public static List<Sub> methodA() { . . . }
}
然后我打电话:
Sub.methodA();
但被执行者来自超类。无论如何我可以执行子类的静态方法吗?它们具有相同的静态方法名称。
更新: 您可以看到 Product 是我的超类,而 purchase 是子类。两者都有相同的静态 getAll() 但返回不同的类型。在这种情况下,它返回列表
【问题讨论】:
-
其实
Sub.methodA()会从子类中执行静态方法 -
试过了,但不是从子类的方法调用,而是调用超类的方法。
-
@user2936719 您的示例与您的真实代码无关,或者您遗漏了一些东西。但实际上 -
Sub.methodA()在您显示的代码中将调用 sub 方法,而不是 super 方法。 -
@user2936719,那么你做错了,因为
Sub.methodA()只能在Sub中调用methodA。 -
你肯定做错了什么。调用应该执行
Sub.methodA()而不是Super.methodA()如果你想确保你通过Sub的实现创建一个新方法,在你的静态方法中添加一个new关键字