2

Java 不支持多重继承,因为如果两个类具有相同的函数名但不同的实现,并且如果第三个类继承了这两个类并且如果它想使用该方法,那么它将在应该调用哪个方法上造成混乱。所以java使用了多个接口的概念。但我怀疑两个多个接口是否也具有相同的函数名称但不同的实现,如果第三个类实现这两个接口,并且当它为该方法提供实现时,这不是问题,请解释一下?

4

5 回答 5

4

Java接口只定义了方法名,没有实现。方法的实现在实现接口的类中完成。这样就避免了这个问题。

于 2012-12-08T12:47:30.923 回答
2

如果两个接口提供了具有相同签名的方法,而这些方法应该做两件不同的事情,那么您确实会遇到一些问题。毕竟,接口不仅指定了方法签名,而且还指定了如何实现它们的协定(尽管编译器无法强制执行)。然后你不能真正扩展这两个接口,因为你的实现只能提供一种方法(所以它必须选择两个合同之一来履行)。但当然,这对运行时系统来说不是问题,更多的是你的界面设计。

于 2012-12-08T12:53:55.703 回答
2

当两个方法具有相同的参数但返回类型不同时,两个接口之间会发生冲突。

例子:

public class MultipleInterfaceClash {

    public interface Foo {
        String baz(int a, String x);
    }

    public interface Bar {
        Double baz(int a, String x);
    }

    public class Confused implements Foo, Bar {

        // Compile error: The return type is incompatible with
        // MultipleInterfaceClash.Foo.baz(int, String)
        public Double baz(int a, String x) {
            return null;
        }

    }
}

不可能同时实现这两个接口。

于 2012-12-08T14:01:06.510 回答
0

接口没有实现。

只有方法定义

公共接口 a{ void a(); }

于 2012-12-08T12:51:45.850 回答
0

接口只是为用户提供了一个契约,在这种情况下是方法签名。实现类必须遵循这个契约。因此,如果两个或多个接口指定相同的合同,那么实现类没有任何问题,因为实现将服务于目的。

接口没有任何默认实现。仅指定方法签名。

于 2012-12-08T12:52:49.720 回答