【发布时间】:2022-10-23 20:46:48
【问题描述】:
我正在学习 Java 中的 interface 概念,特别是关于它与 class 的继承。据我了解,这是接口继承的基本代码语法
interface one{
void funcOne();
}
class Test implements one{
@Override public void funcOne(){
System.out.println("this is one");
}
}
但是当我删除短语@Override 时,代码仍然可以正常工作。那么使用该关键字的目的是什么?
- 在使用
static方法进行测试时,我的困惑加起来了。例如下面的代码会抛出一个错误
interface one{
static void funcOne(){
System.out.println("hello");
}
}
class Test implements one{
@Override static void funcOne() {
System.out.println("This is one");
}
}
但是当@Override 被删除时它不会抛出错误。
我什么时候应该使用关键字@Override,它与static 函数有什么关系?
【问题讨论】:
-
在第一个测试中更改
funcOne,你会看到。@Override如果函数抛出错误才不是覆盖另一个函数。 -
请注意,
@Override不是关键词.它是一个注解.如果将它放在一个方法上,那么编译器将检查以确保该方法实际上覆盖了某些东西,如果没有,则抛出错误。静态方法永远不能覆盖任何东西。在静态情况下,您的Test.funcOne静态方法隐藏one.funcOne静态方法但没有覆盖它。 -
啊,所以注释@Override 是为了确保这个方法被覆盖。谢谢你们的帮助!
标签: java inheritance interface static