Java中介面和抽象類別的區別與相同之處

來源:互聯網
上載者:User

   這篇文章主要介紹了Java中介面和抽象類別的區別與相同之處,本文講解了抽象類別的概念、介面的概念、介面和抽象類別的區別與聯絡等內容,需要的朋友可以參考下

  1. 抽象類別:

  (1).概念:抽象類別是對一種事物的抽象,即對類抽。.抽象類別是對整個類整體進行抽象,包括屬性、行為。Java抽象類別和Java介面一樣,都用來聲明一個新的類型。並且作為一個類型的等級結構的起點。

  (2).格式:

  代碼如下:

  public abstract class abstractDemo{

  /**屬性*/

  private String name;

  /**方法*/

  public abstract void fun();

  }

  (3).說明:

  A:抽象類別中不一定有抽象方法,但是有抽象方法的類一定要定義為抽象類別。

  B:在Java語言中,類有兩種,一種是具體類,另一種是抽象類別。

  具體類可以執行個體化,抽象類別不可以執行個體化。

  C:對於抽象類別,如果需要添加新的方法,可以直接在抽象類別中添加具體的實現,子類可以不進行變更;

  D:抽象方法只有聲明,沒有具體的實現。抽象類別是為了繼承而存在的,如果你定義了一個抽象類別,卻不去繼承它,就等於白白的建立了這個類。

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

  2. 介面:

  (1).概念:介面是對行為的抽象。介面是對類局部(行為)進行抽象。

  (2).格式:

  代碼如下:

  public interface test {

  /** 抽象方法 */

  public abstract void fun();

  }

  (3).說明:

  介面中可以含有變數和方法,但是,介面中的變數會被隱式地指定為public static final。而方法會被隱式地指定為public abstract方法且只能是public abstract方法。

  3. 介面和抽象類別的區別與聯絡:

  (1).抽象類別是對一種事物的抽象,即對類抽象,而介面是對行為的抽象。

  (2).抽象類別是對整個類整體進行抽象,包括屬性、行為,但是介面卻是對類局部(行為)進行抽象。

  (3). 繼承是一個 “是不是”的關係,而 介面 實現則是 “有沒有”的關係。如果一個類繼承了某個抽象類別,則子類必定是抽象類別的種類,而介面實現則是有沒有、具備不具備的關係。

  (4).介面只給出方法的聲明,不給出方法的實現。抽象類別中可以有抽象方法的一般方法。如果是抽象方法的話,只有方法的聲明。如果是一般方法的話,既有方法的聲明,也有方法的實現。

  4. 使用介面的原因:

  (1).沒有介面,可插入性就沒有保證。因為Java是單繼承的。

  (2).在一個類等級結構中的任何一個類都可以實現一個介面,如果這個類實現了這個介面那麼將會影響到此類的所有子類,但是不會影響到此類的所有父類。

  (3).一個類最多有一個父類,但是可以同時實現幾個介面。

  5. 問題:

  在《JAVA編程思想》一書中,將抽象類別定義為“包含抽象方法的類”,但是後面發現如果一個類不包含抽象方法,只是用abstract修飾的話也是抽象類別。也就是說抽象類別不一定必須含有抽象方法。因為如果一個抽象類別不包含任何抽象方法,為何還要設計為抽象類別?

  個人理解:

  抽象類別目的是用來繼承的,在定義上,可以沒有抽象方法,只是用abstract修飾是沒有語法錯誤的,但是沒有哦實際意義。抽象類別中的抽象方法是讓子類繼承抽象類別,來實現抽象類別中的抽象方法,根據子類的需求分別來實現不同的功能。

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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