繼承與介面的區別

2021-08-19 14:48:49 字數 795 閱讀 6819

一.語法層次上:如上所述。 

二.設計層次上: 

1、 抽象層次不同。抽象類是對類抽象,而介面是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性、行為,但是介面卻是對類區域性(行為)進行抽象。 

2、 跨域不同。抽象類所跨域的是具有相似特點的類,而介面卻可以跨域不同的類。我們知道抽象類是從子類中發現公共部分,然後泛化成抽象類,子類繼承該父類即可,但是介面不同。實現它的子類可以不存在任何關係,共同之處。例如貓、狗可以抽象成乙個動物類抽象類,具備叫的方法。鳥、飛機可以實現飛fly介面,具備飛的行為,這裡我們總不能將鳥、飛機共用乙個父類吧!所以說抽象類所體現的是一種繼承關係,要想使得繼承關係合理,父類和派生類之間必須存在」is-a」 關係,即父類和派生類在概念本質上應該是相同的。對於介面則不然,並不要求介面的實現者和介面定義在概念本質上是一致的, 僅僅是實現了介面定義的契約而已,相當於是」like-a」的關係。 

3、 設計層次不同。對於抽象類而言,它是自下而上來設計的,我們要先知道子類才能抽象出父類,而介面則不同,它根本就不需要知道子類的存在,只需要定義乙個規則即可,至於什麼子類、什麼時候怎麼實現它一概不知。比如我們只有乙個貓類在這裡,如果你這是就抽象成乙個動物類,是不是設計有點兒過度?我們起碼要有兩個動物類,貓、狗在這裡,我們在抽象他們的共同點形成動物抽象類吧!所以說抽象類往往都是通過重構而來的!但是介面就不同,比如說飛,我們根本就不知道會有什麼東西來實現這個飛介面,怎麼實現也不得而知,我們要做的就是事前定義好飛的行為介面。所以說抽象類是自底向上抽象而來的,介面是自頂向下設計出來的。

通常是作為乙個標記,你比如這個serializable、cloneable。

**:

繼承與介面的區別

類繼承 子類完全繼承父類特點 抽象類繼承 繼承時抽象的部分不同的子類可以有不同的實現 介面繼承 所有成員在子類都可以有不同的實現 至於為什麼要用介面而不是抽象類 這要看二者適用的情況 當個性大於共性時,適合介面,如鳥和飛機,適合抽象出乙個飛的介面 當共性大於個性時,適合抽象類,如老鷹和麻雀,適合抽象...

關於繼承和介面的區別

當使用繼承的時候,主要是為了不必重新開發,並且在不必了解實現細節的情況下擁有了父類我所需要的特徵。但是很多時候,乙個子類並不需要父類的所有特徵,它可能只是需要其中的某些特徵,但是由於通過繼承,父類所有的特徵都有了,需要的和不需要的特徵同時具備了。而那些子類實際上不需要用到的,有時候甚至是極力避免使用...

介面的繼承

一概念介紹 二介面繼承的應用 1 示例 inte ce inte cea inte ce inte ceb inte ce inte cec extends inte cea,inte ceb public class inte ceextendstest 2執行結果5 6 7 3結果分析 上面 中...