1. 程式人生 > 其它 >第5章 抽象類與介面

第5章 抽象類與介面

抽象類:只有方法名,而沒有方法體的類,就稱之為抽象類.

作用:當父類只是知道子類應該幹什麼,但是不知道子類該如何去實現這些方法,這種時候就應該使用抽象類和抽象方法,在子類中再去具體實現抽象方法.

語法:

abstract class 類名{
//抽象類需要用abstract修飾符來修飾
public abstract 返回值型別 方法名(引數);
//抽象方法也需要用到abstract方法來修飾

}//要使用抽象類的時候直接extends繼承即可

特點:1、抽象類和抽象方法都需要被abstract修飾,並且抽象方法一定要定義在抽象類中.

  2、抽象類不能直接建立物件,因為呼叫抽象方法沒有意義

  3、只有覆蓋重寫了抽象類中的所有抽象方法後,其子類才可以建立物件,否則該子類還是一個抽象類

  4、抽象類中可以不定義抽象方法(所以包含抽象方法的類一定是抽象類,抽象類也可以定義非抽象方法)

介面

介面是比抽象類更抽象的"類".介面只描述所應該具備的方法,並沒有具體實現.

具體的實現由抽象類的實現類(子類)來實現.

優點:將功能的定義與實現分離,優化了程式設計.

語法:

public interface 介面名
{
    修飾符 返回值 抽象方法1();
   修飾符 返回值 抽象方法2();
   修飾符 返回值  抽象方法3();
}
class 實現類名 implements 介面名
{
    抽象方法1實現(){};
    抽象方法2實現(){};
    抽象方法3實現(){};
}

  實現類的抽象方法的修飾符和返回型別、引數必須和介面定義的一樣.

繼承父類同時實現介面:

一個子類可以同時繼承一個父類和實現一個介面

當一個子類繼承了一個父類,同時他又需要其他的

功能的時候,介面就派上用場了.

語法:

class Dog extends 子類 implements 介面
{
    //介面實現
}

介面的多繼承:

類之間可以通過繼承來產生關係,但只支援多層繼承,而不支援多繼承.而介面和類使用implements(實現)來產生關係

同樣,介面之間也可以使用extends進行繼承,而且一個介面還能同時繼承多個介面

語法:

interface 介面名 extends 介面名1,介面名2,介面名3{
//子介面不需要去實現父類介面的方法 }//父介面之間用逗號隔開

課後習題

1、介面和抽象類的異同是什麼?

  1、介面中只有抽象方法,而抽象類中不一定有或只有抽象方法,還能有普通方法和成員變數.

  2、抽象類和介面都不能用來例項化物件.

  3、介面可以多繼承,而抽象類不行

  4、一個類可以實現多個介面,但只能繼承一個抽象類

  5、抽象類可以有建構函式,而介面不能.

2、介面和父類的異同是什麼?

  1、介面中只能有抽象方法(只有方法描述而沒方法實現),而父類中不能擁有抽象方法,可以擁有普通方法(需要有實現)和成員變數.

  2、介面不能例項化物件,而父類可以.

  3、一個子類可以實現多個介面,但只能繼承一個父類.

  4、介面使用implements關鍵字實現,父類使用extends來繼承