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

首頁 > 學院 > 開發設計 > 正文

實現多重繼承

2019-11-11 02:42:19
字體:
來源:轉載
供稿:網友

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

       一、 接口

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

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

[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() {      }        /**      * 對于fight()方法,繼承父類的,所以不需要顯示聲明      */  }  

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

       首先是父親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 {            /**      * 內部類繼承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();      }  }  

       測試程序:

[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  

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

       有關于更多接口和內部類的詳情,請參考這里:

      內部類:java提高篇-----詳解內部類

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 襄城县| 鄂托克前旗| 哈巴河县| 汕尾市| 张家川| 阳曲县| 廊坊市| 娄底市| 景泰县| 分宜县| 花垣县| 沈丘县| 沧州市| 武平县| 连城县| 宣威市| 沿河| 龙海市| 绥化市| 搜索| 博兴县| 肥东县| 广德县| 贞丰县| 灯塔市| 确山县| 兴海县| 新巴尔虎右旗| 元江| 五莲县| 海丰县| 梧州市| 邵东县| 淮滨县| 昌乐县| 康平县| 梨树县| 太仆寺旗| 邹平县| 涡阳县| 上林县|