java基礎 抽象類別與介面

來源:互聯網
上載者:User

標籤:成員方法   父類   增加   java基礎   其他   而不是   子類   成員變數   多個   

抽象類別:

  在物件導向的領域一切都是對象,所有的對象都是通過類來描述的。如果我們要定義的一個類沒有足夠的資訊來描述一個具體的對象,還需要其他的具體類來支援,這個時候我們可以考慮使用抽象類別。在類定義的前面增加abstract關鍵字,就表明一個類是抽象類別。

  抽象類別除了不能執行個體化對象之外,類的其它功能依然存在,成員變數、成員方法和構造方法的訪問方式和普通類一樣。由於抽象類別不能執行個體化對象,所以抽象類別必須被繼承,才能被使用

  abstract關鍵字同樣可以用來聲明抽象方法,抽象方法只包含一個方法名,而沒有方法體。抽象方法沒有定義,方法名後面直接跟一個分號,而不是花括弧。聲明抽象方法會帶來以下兩個結果:

  • 如果一個類包含抽象方法,那麼該類必須是抽象類別。
  • 任何子類必須重寫父類的抽象方法,否則就必須聲明自身為抽象類別

  一般情況下,我們將一個類聲明為abstract的,是因為它包含了沒有具體實現的抽象方法。

介面定義:  

  與抽象類別類似的一個重要概念是介面。介面(Interface)是一組抽象方法的集合。介面中定義的方法沒有方法體,它們以分號結束。

  介面也和抽象類別一樣,無法被執行個體化,但是可以被實現。一個實現介面的類,必須實現介面內所描述的所有方法,否則就必須聲明為抽象類別。編寫介面和編寫類的方式是大體上是類似的,一個介面可以有多個方法,代碼儲存在以介面命名且以.java結尾的檔案中。介面使用interface關鍵字進行定義。

  介面存取權限有兩種:public許可權和預設許可權,如果介面的存取權限是public的話,所有的方法和變數都是public。預設許可權則同一個包內的類可以訪問。

相同點:

  • 都不能被執行個體化
  • 都包含抽象方法,這些抽象方法用於描述系統能提供哪些服務,而這些服務是由子類來提供實現的
  • 在系統設計上,兩者都代表系統的抽象層,當一個系統使用一棵繼承樹上的類時,應該盡量把引用變數聲明為繼承樹的上層抽象類別型,這樣可以提高兩個系統之間的松耦合

不同點:

  • 在抽象類別中可以為部分方法提供預設的實現,從而避免在子類中重複實現它們;但是抽象類別不支援多繼承。介面不能提供任何方法的實現,但是支援多繼承。
  • 介面代表了介面定義者和介面實現者的一種契約;而抽象類別和具體類一般而言是一種is-a的關係,即兩者在概念本質上是不同的。

 

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.