java - 为什么我在下面的代码中没有收到任何错误?
问题描述
下面是我的代码。
public abstract class AbstractClass {
public String publicMethod() {
System.out.println("This is Public Method");
return "This is Public Method";
}
abstract public String abstractMethod();
}
public class ConcreteClass extends AbstractClass{
@Override
public String abstractMethod() {
String str = "This is abstract method implementtation in ConcreteClass";
System.out.println(str);
return str;
}
public String abstractMethod(String string) {
String str = "This is overloaded method abstractMethod in ConcreteClass";
System.out.println(str);
return str;
}
public String publicMethod() {
System.out.println("This is Public Method in ConcreteClass");
return "This is Public Method in ConcreteClass";
}
}
所以我public String publicMethod()
在抽象类以及扩展该抽象类的类中有方法。我也没有给出@Override
注释。为什么没有给出错误?这个方法是覆盖还是publicMethod
被忽略?
解决方案
@Override
是一个可选注解。如果您将此注解用于不覆盖超类方法且不实现接口方法的方法,编译器会报错。
但是,允许在不使用该注释标记的情况下覆盖方法(尽管使用该注释很有用,因为它可以在您打算覆盖方法时捕获错误但获得您打算覆盖错误的方法的签名)。
是的,您的子类publicMethod()
覆盖了同名的超类方法。
推荐阅读
- django - 如何在 django 设置主页
- javascript - 如何重新实现手动模拟模块的模拟功能?
- html - 如何在 iframe 中禁用自动付款和静音背景声音
- python - 如何让用户从列表中的一个值中进行选择
- kubernetes - Kubernetes 部署已创建但未列出
- typescript - 使用 axios 处理来自 GraphQL API 的响应
- python - 从 2 个元组列表中查找公共值,并将一个元组中的值添加到另一个
- java - Android 自定义选择器意图仅显示三个选项
- java - 为什么 ParNew gc 第二次花费了太多时间?
- geolocation - iOS 和 android 是否支持 PWA 的室内定位系统?