关于JAVA接口的一个问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 17:39:52
假设有两个接口A1和A2,在他们中有分别有一个,方法名相同,但是返回值类型不同的2个方法。现在假设有个类B实现了这两个接口,假如同时实现这两个方法,就会报错。问该情况下如何在B类中重写A1和A2接口中同名但是不同返回值的方法?先谢谢了~!

语法可能确实不能实现,但是你考虑,如果方法名一样,那代表这个动作是不是应该在同一个接口内呢,返回值不同,是不是就是说该动作达到的目的不一样呢,从而可以动作+目的来命名这个方法,那么方法名也就不一样了

我写了一下
public interface test {
void add(int a);
int add(int a,int b);
}

public class test1 implements test{
public static void main(String[] args) {
test1 t1=new test1();
t1.add(10);
int a=t1.add(10, 20);
System.out.println(a);
}

public int add(int a, int b) {
int c=0;
c=a+b;
return c;
}
public void add(int a) {
int c=0;
c+=a;
System.out.println(c);

}

}

你看看这样,参数不同,返回值不要求的

其实这个跟重载是类似的情况,现一个类中两个方法名相同,用返回值是不能区别两个方法的,只能用参数来分别。

楼主如果想一定要这样写的话,让方法的参数不同就行

但是这样的设计很容易引起误会,尽量使用不同的方法名。

最简单的就是把两接口变成一个就好了,返回值不同的问题,返回类型直接Object类型,这终能满足你的要求了把。具体处理交给拿到这个返回值的对象方法处理去。

同名函数可以由 参数类型,参数个数,参数顺序来区分,返回值类型是没有效果的

没有试验,但重写函数时你加上接口名对函数进行操作,试试看看

这样确实会报错,直接无法解决。既然返回值不同,只能采用重新命名一个或两个