天天看點

c++抽象類 純虛函數與java抽象類 抽象方法 接口

c++抽象類 純虛函數:

1.c++隻有抽象類和抽象方法概念,沒有接口。

2.其中抽象類不需要任何修飾符,一個類中包含一個或多個純虛函數,那麼該類被稱為抽象類,相反,不包含純虛函數的類稱為具體類,也就是說抽象類的純虛函數是沒有定義的,而具體類的所有成員函數都有定義。

3.抽象類隻能作為基類被子類所繼承,它的作用是提供一個接口;

4.抽象類不能用作參數類型、函數傳回類型或強制類型轉換,但可以聲明抽象類的指針或引用。隻有實作了父類所有純虛方法并且不包含純虛函數的子類才能執行個體化。

5.純虛函數的聲明格式:

class 類名

{

  ...

  virtual 傳回類型 函數名(形參表)=0;

  ...

}

java抽象類 抽象方法 接口:

1)抽象類 抽象方法

1.由abstract修飾的方法叫抽象方法(僅提供聲明,但無函數體)      

    抽象方法文法: abstract 傳回類型 函數名(參數表);

2.由abstract修飾的類叫抽象類

3.抽象方法必須聲明在抽象類中,但抽象類可以沒有抽象方法,可以包含具體方法

4.聲明抽象類文法:     abstract class 類名{…… }

5.使用:父類中的抽象方法不包含任何實作 ,需要在子類中重寫,子類提供這種抽象方法的實作細節。若不重寫,子類也成為抽象類。

6.抽象類不能被執行個體化,抽象類的引用可以指向子類對象。

2)接口

1.可以利用接口實作多态,同時接口也彌補了Java單一繼承的弱點

2.使用interface關鍵字定義接口

3.一般在接口中的方法隻能是聲明,不能是具體的實作即為抽象方法,但省略關鍵字abstract

4.接口中聲明方法、屬性為public且屬性為常量

5.實作接口的方法應聲明為public

6.定義方法的接口:

interface myinterface {     [public] void add(int x, int y);//public可省略     }