亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

Java中接口和抽象類(lèi)的異同

時(shí)間:2025-09-14 13:06:08 java語(yǔ)言

Java中接口和抽象類(lèi)的異同

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

  1. 抽象類(lèi):

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

  (2).格式:

  代碼如下:

  public abstract class abstractDemo{

  /**屬性*/

  private String name;

  /**方法*/

  public abstract void fun();

  }

  (3).說(shuō)明:

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

  B:在Java語(yǔ)言中,類(lèi)有兩種,一種是具體類(lèi),另一種是抽象類(lèi)。

  具體類(lèi)可以實(shí)例化,抽象類(lèi)不可以實(shí)例化。

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

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

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

  2. 接口:

  (1).概念:接口是對(duì)行為的抽象。接口是對(duì)類(lèi)局部(行為)進(jìn)行抽象。

  (2).格式:

  代碼如下:

  public interface test {

  /** 抽象方法 */

  public abstract void fun();

  }

  (3).說(shuō)明:

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

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

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

  (2).抽象類(lèi)是對(duì)整個(gè)類(lèi)整體進(jìn)行抽象,包括屬性、行為,但是接口卻是對(duì)類(lèi)局部(行為)進(jìn)行抽象。

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

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

  4. 使用接口的原因:

  (1).沒(méi)有接口,可插入性就沒(méi)有保證。因?yàn)镴ava是單繼承的。

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

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

  5. 問(wèn)題:

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

  個(gè)人理解:

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

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

Java基礎(chǔ):抽象類(lèi)和接口12-17

Java抽象類(lèi)和接口的比較01-22

Java抽象類(lèi)與接口的區(qū)別12-16

理解Java的接口與抽象類(lèi)12-17

接口和抽象類(lèi)的區(qū)別01-18

Java中的抽象類(lèi)12-08

Java的抽象和接口10-15

java中spring的幾個(gè)重要類(lèi)和接口12-13

Java中接口的知識(shí)匯總11-09