java提高篇(九)-----实现多重继承
多重繼承指的是一個類可以同時從多于一個的父類那里繼承行為和特征,然而我們知道Java為了保證數(shù)據(jù)安全,它只允許單繼承。有些時候我們會認為如果系統(tǒng)中需要使用多重繼承往往都是糟糕的設計,這個時候我們往往需要思考的不是怎么使用多重繼承,而是您的設計是否存在問題.但有時候我們確實是需要實現(xiàn)多重繼承,而且現(xiàn)實生活中也真正地存在這樣的情況,比如遺傳:我們即繼承了父親的行為和特征也繼承了母親的行為和特征。可幸的是Java是非常和善和理解我們的,它提供了兩種方式讓我們曲折來實現(xiàn)多重繼承:接口和內(nèi)部類。
一、 接口
????? 在介紹接口和抽象類的時候了解到子類只能繼承一個父類,也就是說只能存在單一繼承,但是卻可以實現(xiàn)多個接口,這就為我們實現(xiàn)多重繼承做了鋪墊。
????? 對于接口而已,有時候它所表現(xiàn)的不僅僅只是一個更純粹的抽象類,接口是沒有任何具體實現(xiàn)的,也就是說,沒有任何與接口相關的存儲,因此也就無法阻止多個接口的組合了。
interface CanFight {void fight(); }interface CanSwim {void swim(); }interface CanFly {void fly(); }public class ActionCharacter {public void fight(){} }public class Hero extends ActionCharacter implements CanFight,CanFly,CanSwim{public void fly() {}public void swim() {}/*** 對于fight()方法,繼承父類的,所以不需要顯示聲明*/ }二、內(nèi)部類
????? 上面使用接口實現(xiàn)多重繼承是一種比較可行和普遍的方式,在介紹內(nèi)部類的時候談到內(nèi)部類使的多繼承的實現(xiàn)變得更加完美了,同時也明確了如果父類為抽象類或者具體類,那么我就僅能通過內(nèi)部類來實現(xiàn)多重繼承了。如何利用內(nèi)部類實現(xiàn)多重繼承,請看下面實例:兒子是如何利用多重繼承來繼承父親和母親的優(yōu)良基因。
首先是父親Father和母親Mother:
public class Father {public int strong(){return 9;} }public class Mother {public int kind(){return 8;} }????? 重頭戲在這里,兒子類Son:
public class Son {/*** 內(nèi)部類繼承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:10 Son 的kind:6????? 兒子繼承了父親,變得比父親更加強壯,同時也繼承了母親,只不過溫柔指數(shù)下降了。這里定義了兩個內(nèi)部類,他們分別繼承父親Father類、母親類Mother類,且都可以非常自然地獲取各自父類的行為,這是內(nèi)部類一個重要的特性:內(nèi)部類可以繼承一個與外部類無關的類,保證了內(nèi)部類的獨立性,正是基于這一點,多重繼承才會成為可能。
???? 有關于更多接口和內(nèi)部類的詳情,請參考這里:
?????? 內(nèi)部類:?java提高篇----詳解內(nèi)部類
????????? 接口:?java提高篇-----抽象類與接口
作者:?chenssy?
出處:?http://www.cnblogs.com/chenssy/?
from:?http://www.cnblogs.com/chenssy/p/3389027.html
總結
以上是生活随笔為你收集整理的java提高篇(九)-----实现多重继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java提高篇(七)-----关键字st
- 下一篇: InnoDB 存储引擎体系架构