英文:
Java interfaces override method
问题
请解释为什么?找不到任何好的来源。
interface ABCD {
default void print() {}
static void print_static() {}
}
interface B extends ABCD {
static void print() {} // 错误,为什么?
default void print_static() {} // 可以,为什么?
}
回答:
@AdolisPali 因为默认方法 print 是从 ABCD 继承而来的,所以它也在接口 B 中。而且你不能在该接口中拥有一个与名称和参数相同的静态方法。
英文:
please explain why? can't find any good source
interface ABCD {
default void print() {}
static void print_static() {}
}
interface B extends ABCD{
static void print() {}//error, why?
default void print_static() {}//fine, why?
}
Answer:
@AdolisPali Becase the default method print is inherited from ABCD, so it's in interface B too. And you can't have a static method in that interface with the same name and arguments – fps
答案1
得分: 2
你不能覆盖接口的静态方法;你只能通过接口的名称访问它们。如果你试图通过在实现接口中定义类似的方法来覆盖接口的静态方法,它将被视为另一个方法。
参考链接:https://www.tutorialspoint.com/default-method-vs-static-method-in-an-interface-in-java#:~:text=You%20cannot%20override%20the%20static%20(static)%20method%20of%20the%20class.
在Java中,关键字static实际上表示该成员属于类型本身。
英文:
You cannot override the static method of the interface; you can just access them using the name of the interface. If you try to override a static method of an interface by defining a similar method in the implementing interface, it will be considered as another method.
Essentially in Java, the keyword static indicates that the particular member belongs to a type itself.
答案2
得分: 1
每个实例方法会自动继承给它们的子类,并且只能被子类中的实例方法覆盖。静态方法无法覆盖实例方法。因此在您的情况下,来自ABCD的方法"default void print_static()"不会覆盖来自B的"static void print_static()"。您仍然可以为ABCD调用print_static(),对于B调用print_static()。
英文:
Every instance method automatically inherits to their sub classes and only can be overridden by instance method from their sub classes too. Static method can not override instance method. Thus in your case, method "default void print_static()" from ABCD doesn't override "static void print_static()" from B. You still can call ABCD.print_static() for ABCD and print_static() for B.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论