国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

實(shí)現(xiàn)多重繼承

2019-11-11 01:32:05
字體:
供稿:網(wǎng)友

多重繼承指的是一個(gè)類可以同時(shí)從多于一個(gè)的父類那里繼承行為和特征,然而我們知道java為了保證數(shù)據(jù)安全,它只允許單繼承。有些時(shí)候我們會(huì)認(rèn)為如果系統(tǒng)中需要使用多重繼承往往都是糟糕的設(shè)計(jì),這個(gè)時(shí)候我們往往需要思考的不是怎么使用多重繼承,而是您的設(shè)計(jì)是否存在問題.但有時(shí)候我們確實(shí)是需要實(shí)現(xiàn)多重繼承,而且現(xiàn)實(shí)生活中也真正地存在這樣的情況,比如遺傳:我們即繼承了父親的行為和特征也繼承了母親的行為和特征。可幸的是Java是非常和善和理解我們的,它提供了兩種方式讓我們曲折來實(shí)現(xiàn)多重繼承:接口和內(nèi)部類。

       一、 接口

       在介紹接口和抽象類的時(shí)候了解到子類只能繼承一個(gè)父類,也就是說只能存在單一繼承,但是卻可以實(shí)現(xiàn)多個(gè)接口,這就為我們實(shí)現(xiàn)多重繼承做了鋪墊。

       對(duì)于接口而已,有時(shí)候它所表現(xiàn)的不僅僅只是一個(gè)更純粹的抽象類,接口是沒有任何具體實(shí)現(xiàn)的,也就是說,沒有任何與接口相關(guān)的存儲(chǔ),因此也就無法阻止多個(gè)接口的組合了。

[java] view plain copy 在CODE上查看代碼片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() {      }        /**      * 對(duì)于fight()方法,繼承父類的,所以不需要顯示聲明      */  }  

      %20二、內(nèi)部類       上面使用接口實(shí)現(xiàn)多重繼承是一種比較可行和普遍的方式,在介紹內(nèi)部類的時(shí)候談到內(nèi)部類使的多繼承的實(shí)現(xiàn)變得更加完美了,同時(shí)也明確了如果父類為抽象類或者具體類,那么我就僅能通過內(nèi)部類來實(shí)現(xiàn)多重繼承了。如何利用內(nèi)部類實(shí)現(xiàn)多重繼承,請(qǐng)看下面實(shí)例:兒子是如何利用多重繼承來繼承父親和母親的優(yōu)良基因。

       首先是父親Father和母親Mother:

[java] view%20plain copy public class Father {      public int strong(){          return 9;      }  }    public class Mother {      public int kind(){          return 8;      }  }  

       重頭戲在這里,兒子類Son:

[java] view%20plain copy 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();      }  }  

       測(cè)試程序:

[java] view%20plain copy 派生到我的代碼片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  

       兒子繼承了父親,變得比父親更加強(qiáng)壯,同時(shí)也繼承了母親,只不過溫柔指數(shù)下降了。這里定義了兩個(gè)內(nèi)部類,他們分別繼承父親Father類、母親類Mother類,且都可以非常自然地獲取各自父類的行為,這是內(nèi)部類一個(gè)重要的特性:內(nèi)部類可以繼承一個(gè)與外部類無關(guān)的類,保證了內(nèi)部類的獨(dú)立性,正是基于這一點(diǎn),多重繼承才會(huì)成為可能。

       有關(guān)于更多接口和內(nèi)部類的詳情,請(qǐng)參考這里:

      內(nèi)部類:java提高篇-----詳解內(nèi)部類

       接口:java提高篇-----抽象類與接口


上一篇:按鍵

下一篇:強(qiáng)制類型轉(zhuǎn)換

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 清水县| 张家口市| 临颍县| 浪卡子县| 沽源县| 新营市| 醴陵市| 华阴市| 炉霍县| 马公市| 孟州市| 蒙城县| 台南县| 禹城市| 大姚县| 梓潼县| 江阴市| 张家界市| 东乡族自治县| 汉中市| 西乌珠穆沁旗| 玉溪市| 玛曲县| 商城县| 三门县| 永泰县| 芒康县| 紫云| 三穗县| 台南市| 监利县| 南溪县| 常熟市| 庆元县| 临夏县| 阿勒泰市| 永德县| 错那县| 江孜县| 长乐市| 平江县|