亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

java 接口 實現和繼承關系

2019-11-14 08:47:09
字體:
來源:轉載
供稿:網友

一。抽象類

有時候,我們可能想要構造一個很抽象的父類對象,它可能僅僅代表一個分類或抽象概念,它的實例沒有任何意義,因此不希望它能被實例化。例如:有一個父類“ 水果(Fruit)”,它有幾個子類“蘋果(Apple)”、“橘子(Orange)”、“香蕉(Banana)”等。水果在這里僅僅只是作為一個分類, 顯然水果的實例沒有什么意義(就好像一個人如果告訴你他買了一些水果但是卻不告訴你是蘋果還是橘子,你很難想象他到底買的是什么。)。而水果類又要能被子 類化,這就要求我們使用抽象類(abstract class)來解決這個問題。 在java中,通過在class關鍵字前增加abstract修飾符,就可以將一個類定義成抽象類。抽象類不能被實例化。例如:           定義抽象類水果(Fruit)           public abstract class Fruit {                   ……           }            如果我們試圖用以下語句來獲得一個實例,將無法編譯成功。            Fruit fruit = new Fruit(); 而我們仍然可以構造水果類的子類,如:           子類“蘋果(Apple)”            public class Apple extends Fruit {                    ……            }           子類“橘子(Orange)”            public class Orange extends Fruit {                    ……            } 這樣就達到我們的目的了。 抽象類除了能象普通類一樣可以擁有一般的屬性和方法,也可以擁有抽象方法(abstract method)。例如:            抽象類“形狀(Shape)”擁有抽象方法draw()。            public abstract class Shape {                   ……                   public abstract void draw();                   ……            } 抽象方法與抽象的行為相對應,通常是這個行為對父對象沒有意義,而子對象有具體動作。例如方法draw()對于類Shape沒有意義,而類 Shape的子類矩形(Rectangle)的方法draw()可以有實際的動作(根據矩形的四個頂點畫出矩形的四個邊),子類圓(Circle)的方法 draw()也可以有實際的動作(根據圓心和半徑畫出圓周)。 抽象類可以有抽象方法也可以沒有抽象方法;但是如果一個類有抽象方法,那這個類只能定義為抽象類。            如果按照以下代碼類“形狀(Shape)”仍然擁有抽象方法draw(),但沒有定義為抽象類,將會編譯失敗。            public class Shape {                   ……                   public abstract void draw();                   ……            } 抽象方法還有一個特點是,它強迫子類要么仍然保持抽象性(即不具體實現該方法并仍然定義為抽象類),要么具體表現出這個方法的行為(實現具體的動作或者通過拋出UnsupportedOperationException異常來表明不支持該行為)。這樣也可以強化多態性。

 

 

 

二 接口

 

下面談談接口(interface)。java語言使用關鍵字interface定義一個接口。接口也是抽象對象,它甚至比抽象類更抽象。接口中的方法都是抽象方法。 一個接口可以繼承其他接口;一個類通過關鍵字implements聲明要實現一個接口,并具體實現接口的方法。            例如:有一個接口InterfaceA, Java代碼 public   interface  InterfaceA {             void  methodA();    }                類ClassA實現接口InterfaceA。 Java代碼 public   class  ClassA  implements InterfaceA {              public   void  methodA() {                   System.out.PRintln( "methodA of ClassA implements InterfaceA" );             }    }     如果是抽象類實現一個接口,那么抽象類中可以不具體實現接口的方法(保持其抽象性),而由其子類去實現。            抽象類ClassB實現接口InterfaceA,但是沒有具體實現方法methodA(), Java代碼 public   abstract   class  ClassBS  implements InterfaceA{           }                子類ClassBSub實現接口InterfaceA,但是沒有具體實現方法methodA(), Java代碼 public   class  ClassBSub implements InterfaceA{             public   void  methodA() {                  System.out.println( "methodA of ClassBSub the subclass of ClassB" );            }    }  

 

接口和抽象類顯著的共同點是接口和抽象類都可以有抽象方法。 接口和抽象類的不同點有:            (1)抽象類可以有實例變量,而接口不能擁有實例變量,接口中的變量都是靜態(static)的常量(final)。            (2)抽象類可以有非抽象方法,而接口只能有抽象方法。

 

java允許一個接口繼承多個父接口,也允許一個類實現多個接口,而這樣的多繼承有上面提到的缺點馬? 答案是沒有,這是由接口的抽象性決定的。 正如前面介紹的,在接口中不能有實例變量,只能有靜態的常量,不能有具體的方法(包含方法體),只能有抽象方法,因此也就摒棄了多繼承的缺點。 對于一個類實現多個接口的情況,因為接口只有抽象方法,具體方法只能由實現接口的類實現,在調用的時候始終只會調用實現類的方法(不存在歧義), 因此不存在多繼承的第二個缺點;而又因為接口只有靜態的常量,但是由于靜態變量是在編譯期決定調用關系的,即使存在一定的沖突也會在編譯時提示出錯;而引 用靜態變量一般直接使用類名或接口名,從而避免產生歧義,因此也不存在多繼承的第一個缺點。 對于一個接口繼承多個父接口的情況也一樣不存在這些缺點。 請看以下示例。             接口A: Java代碼 public   interface  InterfaceA {             int  len =  1 ;             void  output();    }                 接口B: Java代碼 public   interface  InterfaceB {               int  len =  2 ;               void  output();    }                 接口InterfaceSub繼承接口A和接口B: Java代碼 public   interface  InterfaceSub  extends  InterfaceA, interfaceB {            }                 類Xyz實現接口InterfaceSub: Java代碼 public   class  Xyz  implements  InterfaceSub {             public   void  output() {                    System.out.println( "output in class Xyz." );            }              public   void  outputLen( int  type) {                      switch (type) {                              case  InterfaceA.len:                                     System.out.println( "len of InterfaceA=." +type);                                      break ;                              case  InterfaceB.len:                                     System.out.println( "len of InterfaceB=." +type);                                      break ;                     }            }            public   static   void  main(String[] args) {                   Xyz xyz=  new  Xyz ();                   xyz .output();                   xyz .outputLen();           }                 以上代碼不存在什么問題,但是如果試圖編寫以下存在沖突的代碼,則會編譯失敗。 Java代碼 Xyz xyz =  new  Xyz();    int  len = xyz.len;    System.out.println(len);  


上一篇:C++ 函數的遞歸調用

下一篇:Scala的學習

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91色中文字幕| 欧美精品日韩三级| 91高清视频免费观看| 亚洲欧美日韩视频一区| 国产成人鲁鲁免费视频a| 日韩av电影在线免费播放| 久久亚洲综合国产精品99麻豆精品福利| 91九色在线视频| 日韩小视频网址| 操人视频在线观看欧美| 精品久久久久人成| 中文国产亚洲喷潮| 91久久精品日日躁夜夜躁国产| 在线性视频日韩欧美| 国产成人精品一区二区| 国产69精品99久久久久久宅男| 一区二区中文字幕| 日韩麻豆第一页| 亚洲影院色无极综合| 亚洲qvod图片区电影| 国产精品一区二区三区成人| 亚洲小视频在线观看| 在线观看欧美日韩国产| 欧美日本啪啪无遮挡网站| 成人444kkkk在线观看| 亚洲午夜未满十八勿入免费观看全集| 中文字幕亚洲精品| 欧美韩国理论所午夜片917电影| 中文字幕亚洲欧美日韩高清| 国产亚洲人成a一在线v站| 欧美亚洲成人精品| 91精品久久久久久久久久| 日本精品视频在线播放| 中文字幕日韩欧美精品在线观看| 日av在线播放中文不卡| 亚洲最大福利网| 欧美视频免费在线观看| 姬川优奈aav一区二区| 午夜精品久久久久久久99热浪潮| 亚洲一区亚洲二区亚洲三区| 夜夜嗨av色综合久久久综合网| 高潮白浆女日韩av免费看| 久久久久久国产| 久久精品视频播放| 国产精品黄视频| 欧美性jizz18性欧美| 中文字幕日韩欧美| 日韩美女在线观看一区| 国产69精品久久久久久| 久久久久北条麻妃免费看| 98精品国产高清在线xxxx天堂| 欧美最顶级的aⅴ艳星| 日韩中文字幕视频在线| 亚洲精品综合精品自拍| 久久久久亚洲精品成人网小说| 久久精品电影网| 久久精品亚洲94久久精品| 欧美日本亚洲视频| 欧美激情小视频| 国产久一一精品| 亚洲国产99精品国自产| 亚洲91av视频| 91视频-88av| 亚洲韩国日本中文字幕| 久久夜色精品国产亚洲aⅴ| 亚洲成人动漫在线播放| 国产mv久久久| 国产精品国模在线| 91九色国产在线| 91久久精品国产91久久| 91精品久久久久久久久久| 国产精品91久久| 一区二区三区四区视频| 97在线视频观看| 亚洲视频免费一区| 第一福利永久视频精品| 国产精品老牛影院在线观看| 青青久久av北条麻妃黑人| 国产v综合v亚洲欧美久久| 97超级碰碰人国产在线观看| 久久免费视频在线观看| 97成人超碰免| 亚洲精品美女在线观看| 精品无码久久久久久国产| 一区二区三区在线播放欧美| 亚洲免费伊人电影在线观看av| 亚洲精品电影在线观看| 91国内免费在线视频| 日韩中文视频免费在线观看| 97人人模人人爽人人喊中文字| 91免费综合在线| 欧美成人精品在线播放| 欧美性猛交xxxx免费看| 亚洲国产精品va在线观看黑人| 日韩av日韩在线观看| 日韩亚洲精品电影| 亚洲成成品网站| 亚洲电影成人av99爱色| 日韩有码在线观看| 欧美日韩美女在线观看| 亚洲精品电影久久久| 久久激情视频免费观看| 国内精品久久久久久中文字幕| 91香蕉亚洲精品| 亚洲日本中文字幕| 日产日韩在线亚洲欧美| 成人国产在线激情| 日韩在线视频导航| 在线观看91久久久久久| 亚洲黄色www| 亚洲国产精品电影在线观看| 成人免费福利在线| 韩国视频理论视频久久| 国产亚洲人成网站在线观看| 亚洲精品之草原avav久久| 国产精品欧美日韩一区二区| 久久久久久综合网天天| 欧美日韩国产成人高清视频| 亚洲一品av免费观看| 久久精品国产成人精品| 中文字幕在线观看亚洲| 国产91精品久久久久久久| 欧美激情图片区| 姬川优奈aav一区二区| 欧美孕妇与黑人孕交| 国产亚洲欧美日韩美女| 国产精品入口尤物| 琪琪第一精品导航| 日韩欧美在线视频| 国产精品高潮呻吟久久av野狼| 91亚洲午夜在线| 久久男人av资源网站| 日本精品久久中文字幕佐佐木| 色黄久久久久久| 精品福利在线视频| 亚洲人成毛片在线播放| 91精品国产亚洲| 日韩av在线播放资源| 欧美性猛交xxxx黑人| 欧美超级乱淫片喷水| 亚洲裸体xxxx| 国产日韩精品视频| 亚洲片国产一区一级在线观看| 欧美日韩在线免费观看| 国产精品久久久久久久久久久久久久| 国产精品嫩草影院一区二区| 久久精品国产综合| 色噜噜国产精品视频一区二区| 国产午夜精品理论片a级探花| 国产精品久久久久久久久免费| 欧美亚洲国产视频| 日韩精品在线视频观看| 国产伦精品一区二区三区精品视频| 国产成人亚洲综合91| 日韩精品在线观| 国产免费一区二区三区在线能观看| 精品呦交小u女在线| 久久国内精品一国内精品| 国产亚洲精品激情久久| 国产成人精品午夜| 国产成人鲁鲁免费视频a| 精品香蕉一区二区三区| 久久久免费电影| 欧美精品免费播放|