1、抽象類和抽象方法必須用abstract關鍵字修飾。
- abstract class 類名()
- public abstract void eat();
2、抽象類不一定有抽象方法,有抽象方法的類一定是抽象類或者是接口。
- 一個抽象類如果沒有抽象方法,是可以定義為抽象類的。這么做的目的只有一個,就是不讓其他類創建本類對象,交給子類完成。
3、抽象類不能實例化。那么抽象類如何實例化呢?
- 按照多態的方式,由具體的子類實例化。其實這也是多態的一種,抽象類多態。
4、抽象類的子類
- 要么是抽象類
- 要么重寫抽象類中的所有抽象方法
5、abstract不能和哪些關鍵字共存?
- abstract和static
* 被abstract修飾的方法沒有方法體。
* 被static修飾的方法可以用類名.調用,但是類名.調用抽象方法是沒有意義的。
- abstract和final
* 被abstract修飾的方法強制子類重寫
* 被final修飾的方法不讓子類重寫,所以他兩是矛盾的
- abstract和private
* 被abstract修飾是為了讓子類看到並強制重寫
* 被private修飾不讓子類訪問,所以他兩是矛盾的