亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

java語言

Java中接口和抽象類的異同

時間:2024-08-12 18:28:54 java語言 我要投稿
  • 相關(guān)推薦

Java中接口和抽象類的異同

  “抽象方法”屬于一種不完整的方法,只含有一個聲明,沒有方法主體。本文是百分網(wǎng)小編搜索整理的關(guān)于Java中接口和抽象類的異同,供參考借鑒,希望對大家有所幫助!想了解更多相關(guān)信息請持續(xù)關(guān)注我們應屆畢業(yè)生考試網(wǎng)!

  1. 抽象類:

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

  (2).格式:

  代碼如下:

  public abstract class abstractDemo{

  /**屬性*/

  private String name;

  /**方法*/

  public abstract void fun();

  }

  (3).說明:

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

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

  具體類可以實例化,抽象類不可以實例化。

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

  D:抽象方法只有聲明,沒有具體的實現(xiàn)。抽象類是為了繼承而存在的,如果你定義了一個抽象類,卻不去繼承它,就等于白白的創(chuàng)建了這個類。

  E:對于一個父類,如果它的一個方法在父類中實現(xiàn)沒有任何意義,必須根據(jù)子類的實際需求來進行不同的實現(xiàn),那么就可以將這個方法聲明為abstract方法,此時這個類也就成為了abstract抽象類。

  2. 接口:

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

  (2).格式:

  代碼如下:

  public interface test {

  /** 抽象方法 */

  public abstract void fun();

  }

  (3).說明:

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

  3. 接口和抽象類的區(qū)別與聯(lián)系:

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

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

  (3). 繼承是一個 “是不是”的關(guān)系,而 接口 實現(xiàn)則是 “有沒有”的關(guān)系。如果一個類繼承了某個抽象類,則子類必定是抽象類的種類,而接口實現(xiàn)則是有沒有、具備不具備的關(guān)系。

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

  4. 使用接口的原因:

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

  (2).在一個類等級結(jié)構(gòu)中的任何一個類都可以實現(xiàn)一個接口,如果這個類實現(xiàn)了這個接口那么將會影響到此類的所有子類,但是不會影響到此類的所有父類。

  (3).一個類最多有一個父類,但是可以同時實現(xiàn)幾個接口。

  5. 問題:

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

  個人理解:

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

【Java中接口和抽象類的異同】相關(guān)文章:

接口和抽象類的區(qū)別05-09

java繼承抽象類07-28

介紹Java array接口10-06

Java圖形用戶接口09-04

Java中hashmap和hashtable的區(qū)別06-20

java中String和StringBuffer的區(qū)別08-01

java中i++和++i的區(qū)別10-26

Java中對象和引用的具體區(qū)別05-18

關(guān)于java中堆和棧的區(qū)別10-22

Java中傳值調(diào)用的理解和透析09-17