抽象方法:只有方法名、參數列和返回值,沒有方法體。
既然抽象方法沒有方法體,那麼也就不能被執行。如果某個類含有抽象方法,那麼這個類必須定義為抽象類,即在類定義前用關鍵字abstract修飾。
但需要注意,乙個抽象類可以沒有抽象方法。
抽象類沒有具體的物件。
通常定義抽象類的物件引用指向它子類的物件。
注意:抽象方法和抽象類
1抽象類不可以建立物件
2包含抽象方法的類必須被宣告為抽象類
3抽象類中可以包含非抽象方法和抽象方法,但不一定包含抽象方法
abstract
class
animal
int getage()
abstract
void speak();//抽象方法
}class
catextends
animal
void speak()
}class
bird
extends
animal
void speak()
}public
class
animaldemo
public
static
void main(string args)
}
程式執行結果:
cat speaking
bird speaking
結果說明:
雖然抽象類不能建立物件,但可以像普通類那樣用作變數的型別,如makespeak()方法的引數a。在makespeak()中通過動態繫結執行相應的speak()方法。
若乙個子類未實現父類中的抽象方法,這個子類也是抽象類,必須用關鍵字abstract修飾。因為不能建立抽象類的物件,所以抽象類保證了其所有子類若可以例項化,必須實現抽象類中宣告的抽象方法。
靜態方法、私有方法和final修飾的方法是不能被覆寫的,因此這三類方法不能被定義為抽象方法。
抽象類與抽象方法
有些類注定是不能被初始化的,即不能被new 設想一下,乙個animal類下有很多子類,dog,cat,lion等,這些子類都可以被例項化,但是animal如果被例項化後會變成什麼樣?會有什麼特徵?這是難以想象的,因此像animal這樣的父類就不能例項化,我們迫切需要有一種類,只能例項化其子類物件而本...
抽象類與抽象方法
l 抽象類與抽象方法由abstract修飾 l abstract的使用注意 抽象方法沒有方法體 抽象成員只能存在於抽象類中 抽象類可以有非抽象成員 抽象類的派生類必須實現抽象方法體 抽象類只能用作基類,無法例項化 static void main string args public abstrac...
抽象類與抽象方法
抽象類 含有abstract修飾符的class即為抽象類 抽象類可以宣告物件,但不能例項化物件,必須靠子類將方法實現 含有abstract方法的類必須為抽象類 但是抽象類中的方法可以不是抽象的 抽象方法 抽象方法不能例項化,即沒有方法體 沒有 抽象方法在非抽象子類中需全部重寫 抽象方法只能存在抽象類...