此代码完美地工作。方法test()适用于两个接口。幕后到底发生了什么?在实际情况下,此功能有何用处?
interface A
{
void test();
}
interface B
{
void test();
}
class C implements A, B
{
public void test()
{
System.out.println("abc");
}
}
A a = new C();
a.test();
B b = new C();
b.test();
因为它是一个接口,所以不会造成任何危害。C
通过实现A
和,您基本上是在为您的课程使用蓝图B
。双方A
并B
说,C
应实施一个名为方法test()
您的C
类实现了该方法,因此接口已完成其工作。
基本上,您的C
班级在说:“哦,我需要test()
因为接口A
而实现”,然后您就实现了。然后您的C
班级说:“哦,嘿,test()
由于接口我需要再次实现B
”,它看到已经有一个称为test()
Implemented
的方法,因此很满意。
您还可以在这里找到更多信息:JLS§8.4.8.4
问题内容: 考虑以下代码: 这会导致以下错误: 类型B和A不兼容;都定义了another(),但是返回类型不相关 我已经看到了这样的问题,并按照公认的答案中的不兼容示例进行操作-即 但是,在那种情况下,返回类型确实是不兼容的-返回类型不能同时为void和布尔值。而在上面的示例中,返回类型是an 和a ,因此可以实现两个扩展接口。 此外,在查看了JLS(8.4.8、8.4.8.3、8.4.8.4)之
问题内容: 假设我必须实现在两个不同的包中声明的两个不同的接口(在两个不同的独立项目中)。 我有包装 并包装 在我的包里 如何处理这种情况? 问题答案: 正如常见问题解答所提到的 其他语言的经验告诉我们,使用具有相同名称但签名不同的多种方法有时会很有用,但在实践中也可能会造成混淆和脆弱。 在Go的类型系统中,仅按名称进行匹配并要求类型一致是简化的主要决定 。 在您的情况下,您将满足两个接口。 您可
本文向大家介绍解决Kotlin 类在实现多个接口,覆写多个接口中相同方法冲突的问题,包括了解决Kotlin 类在实现多个接口,覆写多个接口中相同方法冲突的问题的使用技巧和注意事项,需要的朋友参考一下 一、首先来看一个例子 二、解决冲突的例子 补充知识:Kotlin 如何优雅的实现『多继承』 这一期给大家讲一个有意思的东西。我们都知道 Java 当年高调的调戏 C++ 的时候,除了最爱说的内存自动回
问题内容: 具有相同方法名称和签名的两个接口。但是由单个类实现,那么编译器将如何确定哪个方法用于哪个接口? 例如: 问题答案: 如果一个类型实现两个接口,并且每个接口定义一个具有相同签名的方法,则实际上只有一个方法,并且它们是不可区分的。例如,如果这两个方法的返回类型冲突,那么它将是编译错误。这是继承,方法重写,隐藏和声明的一般规则,并且不仅适用于两个继承的interface方法之间的可能冲突,还
问题内容: 我有两个Java接口和一个实现类。 (我已经使用Eclipse直接运行程序,并且我没有尝试通过从命令行进行显式编译来检查任何编译器警告等)。 为什么它们运行没有问题?为什么Java允许这样做,即使它满足两个接口的“合同”,却在实现类时造成歧义? 更新了示例。 问题答案: Java语言规范的第8.1.5节专门允许这种情况: 类中的单个方法声明可以实现多个超级接口的方法。例如,在代码中:
问题内容: 我有以下接口,我想在类中多次实现: 现在,我希望能够通过以下方式实现此接口: 但是,这给了我错误:在行上: 是否可以使用不同的泛型两次实现接口?如果不是,那么我在这里可以做的下一步工作是什么? 问题答案: 您需要使用内部或匿名类。例如: