Java提高篇——Java實現多重繼承,java繼承

來源:互聯網
上載者:User

Java提高篇——Java實現多重繼承,java繼承

  多重繼承指的是一個類可以同時從多於一個的父類那裡繼承行為和特徵,然而我們知道Java為了保證資料安全,它只允許單繼承。有些時候我們會認為如果系統中需要使用多重繼承往往都是糟糕的設計,這個時候我們往往需要思考的不是怎麼使用多重繼承,而是您的設計是否存在問題.但有時候我們確實是需要實現多重繼承,而且現實生活中也真正地存在這樣的情況,比如遺傳:我們即繼承了父親的行為和特徵也繼承了母親的行為和特徵。可幸的是Java是非常和善和理解我們的,它提供了兩種方式讓我們曲折來實現多重繼承:介面和內部類。

 

一、 介面

  在介紹介面和抽象類別的時候瞭解到子類只能繼承一個父類,也就是說只能存在單一繼承,但是卻可以實現多個介面,這就為我們實現多重繼承做了鋪墊。

      對於介面而已,有時候它所表現的不僅僅只是一個更純粹的抽象類別,介面是沒有任何具體實現的,也就是說,沒有任何與介面相關的儲存,因此也就無法阻止多個介面的組合了。

 

 1 interface CanFight { 2     void fight(); 3 } 4  5 interface CanSwim { 6     void swim(); 7 } 8  9 10 interface CanFly {11     void fly();12 }13 14 public class ActionCharacter {15     public void fight(){16         17     }18 }19 20 public class Hero extends ActionCharacter implements CanFight,CanFly,CanSwim{21 22     public void fly() {23     }24 25     public void swim() {26     }27 28     /**29      * 對於fight()方法,繼承父類的,所以不需要顯示聲明30      */31 }

 

二、內部類

  上面使用介面實現多重繼承是一種比較可行和普遍的方式,在介紹內部類的時候談到內部類使的多繼承的實現變得更加完美了,同時也明確了如果父類為抽象類別或者具體類,那麼我就僅能通過內部類來實現多重繼承了。如何利用內部類實現多重繼承,請看下面執行個體:兒子是如何利用多重繼承來繼承父親和母親的優良基因。

首先是父親Father和母親Mother:

 

public class Father {    public int strong(){        return 9;    }}public class Mother {    public int kind(){        return 8;    }}

 

  重頭戲在這裡,兒子類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();    }}

   測試程式:

public class Test1 {    public static void main(String[] args) {        Son son = new Son();        System.out.println("Son 的Strong:" + son.getStrong());        System.out.println("Son 的kind:" + son.getKind());    }}----------------------------------------Output:Son 的Strong:10Son 的kind:6

 兒子繼承了父親,變得比父親更加強壯,同時也繼承了母親,只不過溫柔指數下降了。這裡定義了兩個內部類,他們分別繼承父親Father類、母親類Mother類,且都可以非常自然地擷取各自父類的行為,這是內部類一個重要的特性:內部類可以繼承一個與外部類無關的類,保證了內部類的獨立性,正是基於這一點,多重繼承才會成為可能。

參考文章連結:java提高篇(九)—–實現多重繼承

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.