JAVA抽象類

一個類在描述事物時,沒有足夠的信息來描述這個事物,這個類就是抽象類。

如“犬科”類,該類有犬科的一些基本屬性,但是犬科動物與犬科動物的屬性和行爲方法有區別。
此時應將犬科類定義爲抽象類。

特點:
1、方法只有定義而沒有實現時,該方法就是抽象方法,需要被abstract修飾。
抽象方法必須在抽象類中,該類也必須被abstract修飾。
2、抽象類不能被實例化。因爲抽象方法無意義。
3、抽象類必須有其子類覆蓋了所有抽象方法時,該子類纔可以實例化。
否則該子類還是一個抽象類

abstract class Demo
{
    abstract void show();   //加abstract關鍵字代表這是一個抽象方法,當有抽象方法存在時,類也需要加abstract關鍵字。
                            //此方法不加大括號,沒有方法體,只有一個抽象的定義。
}

1、抽象類中是否有構造函數。
有,用於給子類對象進行初始化

2、抽象類是否可以不定義抽象方法
可以,但是很少見。目的是不讓該類創建對象。AWT的適配器對象就是這種類。
通常這個類中的方法有方法體,但方法體沒有內容

abstract class Demo
    {
        void show1(){}
        void show2(){}
    }

3、抽象關鍵字不可以和哪些關鍵字共存
private 因爲抽象方法需要被子類覆蓋,抽象類中的方法若使用了private關鍵字,則子類無法對其進行覆蓋。
static
final final修飾的類被繼承,修飾的方法不能被覆蓋

4、抽象類和一般類的異同點
同:
抽象類和一般類都是用來描述事物的,都在內部定義了成員
不同:
1、一般類有足夠的信息描述事物
抽象類的信息可能不足
2、一般類中不能定義抽象方法
抽象類中可以定義抽象方法以及非抽象方法
3、一般類可以被實例化
抽象類不可以被實例化

5、抽象類是否一定是父類
TRUE
因爲需要子類覆蓋其所有抽象方法後才能對子類進行實例化。
若子類B未覆蓋抽象類A的所有抽象方法,此時B還是個抽象方法
雖然抽象方法B是A的子類,但是因爲抽象方法沒有全部被覆蓋,此時類B無法實例化
只有抽象類B的子類C對其進行完全覆蓋,類B的子類C纔可以實例化,此時B是C的父類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章