慢慢人生路,學點Jakarta基礎-深入剖析Java的介面和抽象類別

來源:互聯網
上載者:User

標籤:代碼塊   指定   耦合   總結   ali   java   隱式   介面   根據   

  在java物件導向編程的,抽象類別和介面始終存在有疑問的地方,因為兩者太多相似有太多不同,在剛開始學習的時候經常弄的不對,使用情景搞混,今天來總結之前學習Java中介面和抽象類別的問題。

  抽象類別  瞭解:只聲明,未具體實現。
abstract void cry();

  抽象方法必須使用關鍵字abstract進行修飾,如果一旦一個類中包含了abstract方法,那麼這個類必須使用abstract進行修飾;因為抽象類別中含有未實現的方法,抽象類別不能被執行個體化;抽象類別不一定包含抽象方法,也就是說抽象類別可以沒有抽象方法(那麼這個抽象類別為什麼要設計呢?);抽象方法不能存在方法體;抽象類別可以有實現了的方法當一類繼承的父類是抽象類別時,必須全部實現抽象類別的抽象方法。

  對於一個父類,如果它的某個方法在父類中實現出來沒有任何意義,必鬚根據子類的實際需求來進行不同的實現,那麼就可以將這個方法聲明為abstract方法,此時這個類也就成為abstract類了。

 包含抽象方法的類稱為抽象類別,但並不意味著抽象類別中只能有抽象方法,它和普通類一樣,同樣可以擁有成員變數和普通的成員方法。注意,抽象類別和普通類的主要有三點區別:

 1)抽象方法必須為public或者protected(因為如果為private,則不能被子類繼承,子類便無法實現該方法),預設情況下預設為public。

 2)抽象類別不能用來建立對象;

 3)如果一個類繼承於一個抽象類別,則子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義為為abstract類。

 

  介面  設計思想:高內聚低耦合
[public] interface InterfaceName {   }

 

  使用implement關鍵字遵循介面:
class Animalimplements Interface1,Interface2,[....]{ } 

 

  當一類實現多個介面時,如果此類事非抽象類別那麼必須實現該介面的全部方法;原則:

  當一類實現了一個介面,就要實現此介面的全部方法;

  介面不能被執行個體化(正是由於介面的變數不能用private protected修飾,預設 public static final,而方法被隱式地指定為public abstract方法用其他關鍵字,比如private、protected、static、 final等修飾會報編譯錯誤))

  介面中所有方法不能有方法體,也就是說必須是抽象方法;

  定義在介面中的變數,作為全域變數使用:訪問形式 介面名.變數名。

  介面不能繼承類,但是可以繼承其他的介面。

 兩者對比

  一個類只能單繼承一個抽象類別。但是一個類可以實現多個介面。

  成員變數:抽象類別可以是任何類型,介面只能是public static final類型。

  成員方法:抽象類別可以提供實現的方法體,介面中只能存在public abstract 方法。

  靜態方法|代碼塊:介面中不存在,抽象類別可以有。

 

慢慢人生路,學點Jakarta基礎-深入剖析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.