Java中接口多继承
一直都有个概念:Java中的类不允许多继承。
今天看 Spring 源码时发现 ApplicationContext 接口同时继承了好多个接口啊,接口并不也是一种类吗,为什么可以多继承?
Java 中不允许类的多继承是为了避免:A 同时继承了 B 和 C 两个类,并且这两个类中都有一个同名方法D,此时在 A 的实例中调用 D 方法就不知道该运行哪一个。而接口中就没有这种困扰,因为都是抽象方法,没有方法体,在实现类中都要实现方法,就不存在歧义。
对于接口中 default 方法,如下面代码测试。A 接口有了默认方法 fun1(),B 接口中有一个同名方法,但不是默认方法。在实现类 NewTest 中,还是要重写 fun1() 方法。
package com.klaus.spring.test;
interface A {
void fun();
default void fun1() {
System.out.println("OK");
}
}
interface B {
void fun();
void fun1();
}
public class NewTest implements A, B {
@Override
public void fun() {
}
public static void main(String[] args) {
NewTest newTest = new NewTest();
newTest.fun1();
}
}
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15632844.html