1. 程式人生 > 其它 >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();
    }
}

本文來自部落格園,作者:klaus08,轉載請註明原文連結:https://www.cnblogs.com/klaus08/p/15632844.html