抽象類
在面向對象的概念中一切都是對象大渤,同時所有的對象都是通過類來描述的育灸,但是并不是所有的類都是用來描述對象的咒林。如果一個類沒有足夠的信息來描述一個具體的對象效斑,而需要其它具體的實現(xiàn)類來支撐它,那么這樣的類就稱為抽象類袁勺。
抽象類體現(xiàn)了數(shù)據(jù)抽象的思想雹食,是實現(xiàn)多態(tài)的一種機制。由于抽象類不能實例化對象期丰,所以抽象類必須被繼承群叶,才能被使用。
在使用抽象類時需要注意幾點:
1)抽象類不能被實例化钝荡,實例化的工作應該交由它的實現(xiàn)類來完成街立,它只需要有一個引用即可。
2)抽象類中的子類必須通過重寫來實現(xiàn)它的所有抽象方法埠通,除非子類也定義成抽象類赎离。
3)一個類只要包含一個抽象方法,那么該類必須要定義成抽象類端辱。
4)抽象類中可以包含具體的方法梁剔。
5)抽象類中可以不包含抽象方法。
6)抽象類不能用final或static來修飾舞蔽,因為它必須被繼承荣病。
抽象方法
如果你想設計這樣一個類,該類包含一個特別的成員方法渗柿,該方法的具體實現(xiàn)由它的子類確定个盆,那么你可以在父類中聲明該方法為抽象方法。使用abstract關鍵字來聲明抽象方法做祝,抽象方法只包含一個方法名,而沒有方法體鸡岗。
public abstract float price();
因為抽象方法沒有定義混槐,所以沒有花括號。
聲明抽象方法會造成以下兩個結果:
1轩性、如果一個類包含抽象方法声登,那么該類必須是抽象類。
2揣苏、任何子類必須重寫父類的抽象方法悯嗓,或者聲明自身為抽象類。