C語言中文網 目錄

Java內部類的作用:Java利用內部類實現多重繼承

< 上一頁Java匿名類 Java異常處理下一頁 >

多重繼承指的是一個類可以同時從多于一個的父類那里繼承行為和特征,然而我們知道 Java 為了保證數據安全,只允許單繼承。

有些時候我們會認為如果系統中需要使用多重繼承,那往往都是糟糕的設想,這時開發人員往往需要思考的不是怎么使用多重繼承,而是他的設計是否存在問題。但是,有時候開發人員確實需要實現多重繼承,而且現實生活中真正地存在這樣的情況,例如遺傳,我們既繼承了父親的行為和特征,也繼承了母親的行為和特征。

Java 提供的兩種方法讓我們實現多重繼承:接口和內部類。

例 1

本節我們以生活中常見的遺傳例子進行介紹,如兒子(或者女兒)是如何利用多重繼承來繼承父親和母親的優良基因的。

(1) 創建 Father 類,在該類中添加 strong() 方法。代碼如下:
public class Father
{
    public int strong()
    {    //強壯指數
        return 9;
    }
}

(2) 創建 Mother 類,在該類中添加 kind() 方法。代碼如下:
public class Mother
{
    public int kind()
    {    //友好指數
        return 8;
    }
}

(3) 重點在于兒子類的實現,創建 Son 類,在該類中通過內部類實現多重繼承。代碼如下:
public class Son
{
    //內部類繼承Father類
    class Father_1 extends Father
    {
        public int strong()
        {
            return super.strong()+1;
        }
    }
    class Mother_1 extends Mother
    {
        public int kind()
        {
            return super.kind()-2;
        }
    }
    public int getStrong()
    {
        return new Father_1().strong();
    }
    public int getKind()
    {
        return new Mother_1().kind();
    }
}

上述代碼定義兩個內部類,這兩個內部類分別繼承 Father(父親)類和 Mother(母親)類,且都可以獲取各自父類的行為。這是內部類一個很重要的特性:內部類可以繼承一個與外部類無關的類,從而保證內部類的獨立性。正是基于這一點,多重繼承才會成為可能。

(4) 創建 Test 類進行測試,在 main() 方法中實例化 Son 類的對象,然后分別調用該對象的 getStrong() 方法和 getKind() 方法。代碼如下:
public class Test
{
    public static void main(String[] args)
    {
        Son son=new Son();
        System.out.println("Son 的強壯指數:"+son.getStrong());
        System.out.println("Son 的友好指數:"+son.getKind());
    }
}

執行上述代碼,輸出結果如下:
Son 的強壯指數:10
Son 的友好指數:6

從實現代碼和輸出結果可以發現,兒子繼承父類,變得比父親更加強壯;同時也繼承了母類,只不過友好指數下降。
< 上一頁Java匿名類 Java異常處理下一頁 >

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo