java - 为什么在两个代码片段中的“@Override”注释都能正常工作?
问题描述
尽管该类B
实现了接口A
,但它不提供方法的实现show()
。同样,D
extendsC
但在类 D 中的实现与其超类displayNothing()
中方法的实现相同。displayNothing()
C
但是在这两种情况下@Override
,注释都可以正常工作,为什么?
//code snippet 1
interface A
{
void show();
}
abstract class B implements A
{
@Override
abstract public void show();
}
//code snippet 2
class C
{
void displayNothing()
{
}
}
class D extends C
{
@Override
void displayNothing()
{
}
}
解决方案
@Override 只关心您的函数名称以及数据类型是否与超类中的方法相同(没有字母错误)。在您的情况下,它是相同的。尝试在您的 D 类中将void更改为int。它显示编译错误。至于您的抽象类方法,它不需要定义任何东西,因为名称说明了一切,它是abstract。
推荐阅读
- regex - 用 2 个表达式构建正则表达式
- regex - sed 正则表达式替换手机号码
- ruby-on-rails - 我可以将表单数据从一个控制器提交到 rails api 控制器上的 ruby 吗?
- python - numpy AttributeError:使用 theano 模块“numpy.core.multiarray”没有属性_get_ndarray_c_version
- mysql - Secure Priv Option Mysql 是什么?
- postgresql - 在 orm.xml (Spring Data / JPA 2.1 /Hibernate 5.3.7/Postgresql) 中定义@Type?
- sql-server - SQL Server 2014:如何在 csv 导出中包含标题和详细信息
- ruby - Ruby Sketchup - 旋转 3d 文本
- javafx - Javafx如何正确切换场景?
- python - 如何使用 Docker 清除 Django 的缓存?