1. 程式人生 > 其它 >Java中的抽象、介面、Final修飾類與C++中抽象類和介面區別的概念解析

Java中的抽象、介面、Final修飾類與C++中抽象類和介面區別的概念解析

首先是複習一下基礎概念,明白什麼是抽象類和介面

一、抽象類:

我們把一類事物抽象出來,類中只宣告方法,不實現,這就是抽象類存在的意義;

抽象類: 含有抽象方法的類,被abstract 關鍵字修飾;
抽象方法:只有方法宣告沒有方法實體,被abstract關鍵字修飾;

注意要點:
1、抽象類沒有例項物件,只能通過別的類繼承實現抽象方法;
2、抽象類可以含有普通方法,但是隻要包含一個抽象方法,此類就是抽象類;
3、抽象方法需要通過繼承來實現,所以抽象方法不能被private關鍵字所修飾;
4、繼承了抽象類的類必須實現抽象類裡面提供的所有抽象方法,不然這個子類依然是一個抽象類,需要被abstract所修飾;
5、一個子類只能繼承一個抽象類;

[public] abstract class ClassName{ //定義了一個抽象類
  public abstract void fun(); //宣告一個抽象方法
}

C++中
而在c++中的抽象類是特殊的類,只是不能被例項化(將定義了一個或多個純虛擬函式的類稱為抽象類);除此以外,具有類的其他特性;重要的是抽象類可以包括抽象方法,這是普通類所不能的,但同時也能包括普通的方法。抽象方法只能聲明於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自一個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。雖然不能定義抽象類的例項,但是可以定義它的指標,並且指向抽象類的指標實際上在賦值時是指向其繼承類的例項化物件的

,這樣通過統一的使用該指標可以很好的封裝不同子類的實現過程,這在模式設計的過程中得到了極大的應用!