当一个类实现两个接口时,接口具有相同的方法名称但不同的返回类型为什么它不起作用?

时间:2017-04-29 08:20:42

标签: java interface overloading

当一个类实现两个接口时,接口具有相同的方法名称但不同的返回类型为什么它不起作用? java会为此编译错误,为什么我们不能重载interface_1类中的方法?

import static java.lang.System.out; 
    interface A1{
        int add();
    }
    interface A2{
        String add();
    }
    public class interface_1 implements A1,A2{

        public static void main(String args[]){
        out.println("a");
        }

        @Override
        public String add() {
            // TODO Auto-generated method stub
            return null;
        }
        @Override
        public int add() {
            // TODO Auto-generated method stub
            return 2;
        }
    }

1 个答案:

答案 0 :(得分:3)

你不能这样做的原因与你单独在其返回类型上重载方法的原因相同:Java缺少一种语法来选择当方法名称和参数相同时要调用哪种方法。

写作时

object res = obj.add();

编译器不知道您要调用的两个add方法中的哪一个,即返回intString的方法,因为它们的名称和参数相同。