java - 为什么在接口中定义但在类中没有实现的这个方法可以被调用?
问题描述
说这里我有一个 Java 接口 Eat:
public interface Eat {
default void eat(Meat meat) {}
@Deprecated
default void eat(Meat meat, Mood mood) {}
}
而且我有一个抽象类在接口中只实现一个方法:
public abstract class DogBase implements Eat {
@Override
public void eat(Meat meat) {}
}
我有一个类扩展了抽象类:
public class Dog extends DogBase {
}
然后我发现在 Dog 类的单元测试中,不推荐使用的方法:
@Deprecated
default void eat(Meat meat, Mood mood) {}
接口 Eat 中定义的可以被 Dog 类的对象调用。
为什么这可能?在我的理解中,抽象类 DogBase 只实现了接口中定义的非弃用方法,因此 Dog 类不应该有弃用的方法。
解决方案
推荐阅读
- xamarin.forms - 如何为 Azure AD 形成正确的租户 URL
- sql-server - SQL Server - 表中每个连续条目之间的差异总和
- javascript - ASP.NET MVC 和 WebAPI 使用数据库表插入和检索记录
- angular - EventEmitter 类的清晰概念
- excel - 根据 Excel 中不同范围内的值查找系列的最大值
- sql - SQL Server 中的日期计数
- batch-file - 通过 Jenkins 中的批处理脚本上传 QAV 失败
- python - 字典中的结构系列(python)
- performance - 我想在jmeter中按顺序从csv中获取数据。应该怎么做?
- odoo - 如何通过 alpine 安装带有所有软件包的 Odoo 服务器