抽象類和普通類的區別:抽象方法必須為public或者protected(因為如果為private,則不能被子類繼承,子類便無法實現該方法),缺省情況下默認為public。
抽象類不能用來創建對象;如果壹個類繼承於壹個抽象類,則子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義為為abstract類。
在Java中被abstract關鍵字修飾的類稱為抽象類,被abstract關鍵字修飾的方法稱為抽象方法,抽象方法只有方法的聲明,沒有方法體。抽象類是用來捕捉子類的通用特性的。它不能被實例化,只能被用作子類的超類。抽象類是被用來創建繼承層級裏子類的模板。
Java中接口使用interface關鍵字修飾。接口是抽象方法的集合。如果壹個類實現了某個接口,那麽它就繼承了這個接口的抽象方法。這就像契約模式,如果實現了這個接口,那麽就必須確保使用這些方法。接口只是壹種形式,接口自身不能做任何事情。
抽象類的特點
1、抽象類不能被實例化,即不能使用new關鍵字來實例化對象,只能被繼承。
2、包含抽象方法的壹定是抽象類,但是抽象類不壹定含有抽象方法。
3、抽象類中的抽象方法的修飾符只能為public或者protected,默認為public。
4、抽象類中的抽象方法只有方法體,沒有具體實現。
5、如果壹個子類實現了父類(抽象類)的所有抽象方法,那麽該子類可以不必是抽象類,否則就是抽象類。
6、抽象類可以包含屬性、方法、構造方法,但是構造方法不能用於實例化,主要用途是被子類調用。