Java中的抽象類別與介面

來源:互聯網
上載者:User

標籤:

抽象類別

抽象類別是由abstract修飾的類,並且一定包含有用abstract修飾的方法,也就是抽象方法,當一個類中有抽象方法的時候,這個類一定要被定義成抽象類別。

抽象類別中也可以沒有抽象方法。

抽象類別除了有抽象方法,其它的與普通的類沒什麼區別。

當抽象類別作為父類被子類繼承時,子類必須實現抽象類別父類中的抽象方法,如果沒實現的話,則必須將子類也定義為抽象類別,父類不為抽象類別時,子類也可以為抽象類別。

抽象類別不能用new操作符來初始化,但是可以定義它的構造方法


介面

介面是一種與類相似的結構,只包含常量和抽象方法,即介面中出現的資料是常量,預設為public static final定義的,方法預設為abstract,可以不寫。

一個介面可以擴充一個或多個介面。

一個類只能繼承一個類,但是能實現多個介面,從而實現多繼承。

介面也不能用new操作符來初始化。


區別


變數 構造方法 方法
抽象類別 無限制 子類通過構造方法鏈調用構造方法,抽象類別不能用new操作符執行個體化 無限制
介面

所有的變數必須

是public static final的

沒有構造方法,介面不能用new操作符執行個體化 所有的方法必須是公用的抽象執行個體方法


設計指南

抽象類別和介面都是用來明確多個對象的共同特徵的。一般來說,詳細描述父子關係的強是關係(strong is-a relationship)應該用類建模。例如,因為西曆是一種日曆,所以,類java.util.GregorianCalendar和java.util.Calendar是用類繼承建模的。弱是關係(weak is-a relationship)也稱為類屬關係(is-kind-of relationship),它表明對象擁有某種屬性。弱是關係可以用介面來建模。例如,所有的字串都是可比較的,因此,String類實現Comparable介面。

Java中的抽象類別與介面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.