java - Java接口覆盖方法
问题描述
请解释为什么?找不到好的来源
interface ABCD {
default void print() {}
static void print_static() {}
}
interface B extends ABCD{
static void print() {}//error, why?
default void print_static() {}//fine, why?
}
答:@AdolisPali 因为默认方法 print 是从 ABCD 继承的,所以它也在接口 B 中。而且您不能在该接口中拥有具有相同名称和参数的静态方法 – fps
解决方案
不能覆盖接口的静态方法;您可以使用接口名称访问它们。如果你试图通过在实现接口中定义类似的方法来覆盖接口的静态方法,它将被视为另一种方法。
看到这个:https ://www.tutorialspoint.com/default-method-vs-static-method-in-an-interface-in-java#:~:text=You%20cannot%20override%20the%20static,static ) %20method%20of%20the%20class。
本质上,在 Java 中,关键字 static 表示特定成员属于类型本身。
推荐阅读
- javascript - 如何在Javascript中将字符串转换为键/值对(映射)
- python - 等待 Plink -batch 命令完成
- jsonnet - 使用 jsonnet 更新现有数组元素
- ruby-on-rails - Rails 记录查询需要永远加载每条记录 1 到 1
- python - / 不支持的操作数类型:'list' 和 'int' Python
- terminal - 无法从本地计算机连接到 Google Cloud SQL 实例
- c - 如何使用 realloc 为 struct 中的数组分配内存?
- google-cloud-dataproc - 创建 Dataproc 集群时的云 SQL 代理初始化操作
- reactjs - 如何在客户端维护服务器时间?
- javascript - Javascript - 依赖于多个异步进程的多个隔离操作的最佳实践