Java 类继承自具有相同方法签名的多个接口

Java 类继承自具有相同方法签名的多个接口,java,oop,interface,Java,Oop,Interface,1) 如何用Java解决这个问题 2) 如果接口中只有返回类型不同怎么办?1)这不是一个真正的问题,因为接口没有定义实现。在本例中,所有三种情况都将调用相同的实现 2) 如果返回类型兼容,则没有问题(请参阅)。简单地说,如果新返回类型扩展了接口中定义的返回类型,则可以更改返回类型: class A { ... List returnList(); } class B extends A { ... ArrayList returnList(); // possible as an Ar

1) 如何用Java解决这个问题

2) 如果接口中只有返回类型不同怎么办?

1)这不是一个真正的问题,因为接口没有定义实现。在本例中,所有三种情况都将调用相同的实现

2) 如果返回类型兼容,则没有问题(请参阅)。简单地说,如果新返回类型扩展了接口中定义的返回类型,则可以更改返回类型:

class A {
 ...
 List returnList();
}

class B extends A {
 ...
 ArrayList returnList(); // possible as an ArrayList is a List
}
1) 如何用Java解决这个问题

本质上,各个接口中方法的不同“版本”都绑定到相同的实现方法

  • 如果那是你想要的,好吧

  • 如果您确实希望每个接口使用不同版本的方法,那么您就被卡住了。在Java中不能这样做


2) 如果接口中的返回类型不同怎么办

如果返回类型不兼容,则无法编写实现所有接口的类。编译错误

那么,返回类型何时兼容

  • 在Java5.0之前,重写或实现方法的返回类型必须与重写或实现方法的返回类型相同

  • 在Java 5.0中,对该语言进行了修改,以允许您使用返回类型重写/实现方法,该返回类型是重写/实现方法的返回类型的子类

所以。。。如果您使用的是Java 5.0或更高版本。。。您需要使用相同类型的返回类型或方法所有版本的所有返回类型的子类来实现。如果没有此类类型,则该类不可实现。显然,这不适用于基元返回类型,因为基元类型之间不存在子类关系


(注意:在Java 5.0+中,我们讨论的是声明的返回类型之间的子类关系……而不是返回对象的运行时类型。)

相关:如果有三个方法具有不兼容的签名,它们应该有不同的名称来描述它们的功能。调用所有的方法
method
是没有意义的。你可以试试看,但这会有帮助吗?