一抽象類
1抽象類的產生
當編寫乙個類時,我們往往會為該類定義一些方法,這些方法是用來描述該類的功能具體實現方式,那麼這些方法都有具體的方法體。
但是有的時候,某個父類只是知道子類應該包含怎麼樣的方法,但是無法準確知道子類如何實現這些方法。比如乙個圖形類應該有乙個求周長的方法,但是不同的圖形求周長的演算法不一樣。那該怎麼辦呢?
分析事物時,發現了共性內容,就出現向上抽取。會有這樣一種特殊情況,就是方法功能宣告相同,但方法功能主體不同。那麼這時也可以抽取,但只抽取方法宣告,不抽取方法主體。那麼此方法就是乙個抽象方法。
2抽象方法定義的格式:
public abstract 返回值型別 方法名(引數);
抽象類定義的格式:
abstract class 類名
class cat extends animal
}class dog extends animal
}public class test4
}輸出:
喵喵汪汪
3抽象類的特點
a、抽象類和抽象方法都需要被abstract修飾。抽象方法一定要定義在抽象類中。
b、抽象類不可以直接建立物件,原因:呼叫抽象方法沒有意義。
c、只有覆蓋了抽象類中所有的抽象方法後,其子類才可以建立物件。否則該子類還是乙個抽象類。
之所以繼承抽象類,更多的是在思想,是面對共性型別操作會更簡單
4抽象類的細節問題
a、抽象類一定是個父類?
是的,因為不斷抽取而來的。
b、抽象類中是否可以不定義抽象方法。
是可以的,那這個抽象類的存在到底有什麼意義呢?不讓該類建立物件,方法可以直接讓子類去使用
抽象類中可以沒有抽象方法,但是該類也不能被例項化,也就是說不能new,抽象方法必須在抽象類中。
抽象方法:用abstract修飾的方法(注:抽象方法只有方法宣告沒有方法體,抽象方法必須在抽象類中,抽象類不能被例項化,不管裡面有沒有抽象方法),但是抽象類中的構造方法和普通類的構造方法相同,沒有什麼特殊的,抽象類中的構造方法是供子類構造方法使用的),子類繼承該抽象類,會繼承父類的抽象方法,要重寫它的抽象方法(實現了方法的真正的功能)。如果子類值只重寫了部分父類的構造方法,子類還是抽象類(因為裡面含有抽象方法),必須用abstarct修飾(注:抽象類是不能建立物件的。
問題1沒有抽象方法的抽象類是否可以建立物件?
//不能。抽象類是不能例項化物件的
abstract class a
}public class test2
}
繼承 抽象方法 介面
一 好處 繼承的本質在於抽象。類是對物件的抽象,繼承是對某一批類的抽象。為了提高 的復用性,子類可以呼叫父類的方法和屬性。public class animal class bird extends animal二 乙個子類只能繼承乙個父類,但介面可以繼承多個父介面。三 super 是直接父類物件的...
抽象類,抽象方法,介面
抽象類 類中含有抽象方法 abstract修飾 但抽象類中也可以沒有抽象方法,類使用abstract修飾依然不會報錯,但有抽象方法類一定為抽象類,將可以形成某一類方法的使用定義為抽象方法,供所有子類覆蓋重寫使用,抽象類中可以有構造方法,當被其他類繼承時,呼叫父類的super 繼承父類的抽象方法。抽象...
C 抽象方法 虛方法 介面
抽象方法和虛方法都可以寫在抽象類中,它們有什麼區別呢?接下來就讓我帶你分析一下吧。一 virtual方法 虛方法 virtual 關鍵字用於在基類中修飾方法,它有兩種情況 1 在基類中定義virtual方法,但在派生類中沒有重寫該虛方法。那麼在堆派生類例項呼叫中,該虛方法使用的是基類定義的方法。2 ...