Redefining static method in child class
我想知道为什么在Java中首先允许这个问题(或者一般的OOP)我记得静态方法对于父类和子类都很常见
1 2 3 4 5 6 7 8 9 10 11 12 | public class Redefine extends Parent{ public static void test () { } } class Parent{ public static void test () { } } |
问题1:由于静态方法不支持重写,那么两个类如何包含相同的方法?
问题2:如果将static中的方法更改为引发未定义的异常,则不编译该异常。为什么会这样。它显然不是重写的,所以应该允许我抛出新的异常,对吗?
1 2 3 4 5 |
号
a1::EDOCX1-0方法是每类的。它们与多态性方面的继承层次结构无关。因此,调用EDOCX1将调用父方法,而调用EDOCX1将调用子方法。
A2:JLS 8.4.8写道:
BLCK1你在覆盖它,你在隐藏它
HTTP://FAQ.JavaRuncWeb/Java/重写VSHIDEN
你有什么例外?
问题1:静态方法不会被重写,所以这是两个具有相同签名的不同方法。一个使用parent.test()调用,另一个使用redefine.test()调用
问题2:你的方法似乎有效。你犯了什么错误?