Java教程

Java中接口多继承

本文主要是介绍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();
    }
}

这篇关于Java中接口多继承的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!