9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦>知識大全>知識百科>百科知識>

Java中抽象類與接口的區別

時間: 映芳735 分享

  抽象類和接口是Java語言中對于抽象類定義進行支持的兩種機制,正是由于這兩種機制的存在,才賦予了Java強大的面向對象能力。抽象類和接口之間在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換,因此很多開發者在進行抽象類定義時對于抽象類和接口的選擇顯得比較隨意。其實,兩者之間還是有很大的區別的,那么它們之間有什么區別呢?下面,學習啦小編帶你去了解一下。

  一、抽象類與接口語法定義的區別

  在語法層面,Java語言對于抽象類和接口給出了不同的定義方式,下面以定義一個名為Demo的抽象類為例來說明這種不同。

  使用抽象類的方式定義Demo抽象類的方式如下:

  abstract class Demo {

  abstract void method1();

  abstract void method2();

  …

  }

  使用interface的方式定義Demo抽象類的方式如下:

  interface Demo {

  void method1();

  void method2();

  …

  }

  在抽象類方式中,Demo可以有自己的數據成員,也可以有非abstarct的成員方法。

  而在接口方式的實現中,Demo只能夠有靜態的不能被修改的數據成員(也就是必須是static final的,不過在interface中一般不定義數據成員),所有的成員方法都是abstract的。

  從某種意義上說,接口是一種特殊形式的抽象類。

  二、抽象類和接口的編程區別

  從編程的角度來看,抽象類和接口都可以用來實現"design by contract"的思想。但是在具體的使用上面還是有一些區別的。

  1、抽象類在Java語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。

  但是,一個類卻可以實現多個接口。也許,這是Java語言的設計者在考慮Java對于多重繼承的支持方面的一種折中考慮吧。

  2、在抽象類的定義中,我們可以賦予方法的默認行為。

  但是在接口的定義中,方法卻不能擁有默認行為,為了繞過這個限制,必須使用委托,但是這會 增加一些復雜性,有時會造成很大的麻煩。

  3.在抽象類中定義默認行為,一旦抽象類中的行為方法發生改變,就會影響繼承他的子類。

  但是另一個方面,如果不利用抽象類中定義默認行為,就會導致同樣的方法實現出現在該抽象類的每一個派生類中,違反了"one rule,one place"原則,造成代碼重復,同樣不利于以后的維護。

  因此,在抽象類和接口間進行選擇時要非常的小心。

  三、抽象類和接口的設計理念區別

  上面主要從語法定義和編程的角度論述了抽象類和接口的區別,這些層面的區別是比較低層次的、非本質的。現在小編將從另一個層面,即抽象類和接口所反映出的設計理念,來分析一下二者的區別。小編認為,從這個層面進行分析才能理解二者概念的本質所在。

  抽象類在Java語言中體現了一種繼承關系,要想使得繼承關系合理,父類和派生類之間必須存在"is a"關系,即父類和派生類在概念本質上應該是相同的(參考文獻〔3〕中有關于"is a"關系的大篇幅深入的論述,有興趣的讀者可以參考)。

  對于接口來說則不然,并不要求接口的實現者和接口定義在概念本質上是一致的,僅僅是實現了接口定義的契約而已。為了使論述便于理解,下面將通過一個簡單的實例進行說明。

  考慮這樣一個例子,假設在我們的問題領域中有一個關于Door的抽象概念,該Door具有執行兩個動作open和close,此時我們可以通過抽象類或者接口來定義一個表示該抽象概念的類型,定義方式分別如下所示:

  使用抽象類方式定義Door:

  abstract class Door {

  abstract void open();

  abstract void close();

  }

  使用接口方式定義Door:

  interface Door {

  void open();

  void close();

  }

  其他具體的Door類型可以extends使用抽象類方式定義的Door或者implements使用接口方式定義的Door。看起來好像使用抽象類和接口沒有大的區別。

Java中抽象類與接口的區別

抽象類和接口是Java語言中對于抽象類定義進行支持的兩種機制,正是由于這兩種機制的存在,才賦予了Java強大的面向對象能力。抽象類和接口之間在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換,因此很多開發者在進行抽象
推薦度:
點擊下載文檔文檔為doc格式
537622 主站蜘蛛池模板: 国产精品午夜剧场免费观看| 亚洲丰满熟女一区二区v| 男女激情一区二区三区| 国产成人精品亚洲资源| 亚洲综合高清一区二区三区| 精品人妻一区二区| 99热精品国产三级在线观看| 国产高清国产精品国产专区| 国产欧美在线手机视频| 国产蜜臀在线一区二区三区| 日韩国产精品区一区二区| 国产一级特黄性生活大片| 97在线观看视频免费| 免费无码黄十八禁网站| 亚洲人妻精品中文字幕| 欧美一区二区三区成人久久片| 囯产精品久久久久久久久久妞妞| 超碰成人人人做人人爽| 国产精品国产精品国产专区| 夜夜春久久天堂亚洲精品| 欧美精品国产综合久久| 2020国产欧洲精品网站| 蜜桃亚洲一区二区三区四| 亚洲欧美成人a∨观看| 成人免费乱码大片a毛片| 国产精品午夜福利免费看| 久久天天躁狠狠躁夜夜婷| 国产乱码1卡二卡3卡四卡5| 亚洲区中文字幕日韩精品| 99在线精品视频观看免费| 欧美成人精品三级网站| 老司机亚洲精品一区二区| 极品无码人妻巨屁股系列| 久久这里只有精品好国产| 国产一区二区不卡视频在线| 国产亚洲制服免视频| 亚洲av无码成人精品区一区| 极品人妻少妇一区二区三区| 久青草久青草视频在线观看| 中文字幕亚洲制服在线看| 中文字幕无线码免费人妻|