ps:其實理解乙個概念我們可以對比學習。就拿普通類對比來說:
(1)普通類定義之後,它可以直接例項化使用,可以在其中定義構造方法、普通方法、static方法、常量、變數等。而所謂的抽象類,就是在普通類中增加(定義)了抽象方法。
(即相當於在普通類中定義了乙個方法,只不過這個方法都是抽象方法,僅此而已。)
(2)普通方法都有 「{}」 方法體,有方法體的方法可以直接被物件使用,而抽象方法只有方法的定義沒有方法體。每個方法都有宣告,怎麼證明乙個方法是抽象方法呢? 關鍵字:abstract就是證明。
(即只要abstract關鍵字定義的方法就是抽象方法)
關鍵的來了:擁有抽象方法的類一定屬於抽象類,也要abstract關鍵字定義和宣告。
*來瞧瞧它的廬山真面目~~~~~~~*
abstract
class
a//此方法並沒有方法體的宣告,並且存在有abstract關鍵字,表示抽象方法。
public
abstract
void
print()
;
(1)抽象類必須有子類(即抽象類必須被子類繼承——單繼承)。
為什麼呢?普通類直接例項化,例項化之後就以為著可以使用類中的方法和屬性,而抽象類中只有方法的定義,沒有方法體,例項化之後呼叫什麼??????所以編譯器直接告訴你抽象類不能直接例項化。
(2)抽象類的子類必須覆寫抽象類中定義的所有方法(強制子類覆寫,且子類不是抽象類)
強制就有了標準,相比之下,普通類繼承關係的覆寫還是很自由啊~~~~~~~
(3)抽象類的例項化操作由子類來完成,通過向上轉型來處理
*用**說話~~~~~~~~~~~~~~~*
class
b extendsa
}public
class
testdemo
抽象類 抽象方法
抽象類 1.類名前有abstruct修飾。有構造方法。在建立抽象類的子類的時候,還是會先建立抽象父類的物件的。2.抽象類不能例項化是指不能手動的new。抽象方法 1.抽象方法 沒有方法體且需要用abstruct關鍵字修飾 作用 需要改變的地方都應該是抽象。抽象方法只能存在於抽象類或介面中。2.有抽象...
抽象類,抽象方法
1 抽象類中可以有實現的方法。抽象方法必須在抽象類中。using system using system.collections.generic using system.linq using system.text namespace test 抽象類可以包含抽象屬性 public int age...
抽象類 抽象方法
抽象方法 使用 abstract修飾的方法,只有方法的宣告 沒有方法體 定義的是一種 規範 就是告訴子類必須要給抽象方法提供具體的實現 抽象類 包含抽象方法的類就是抽象類 通過abstract方法定義規範 然後要求子類必須定義具體實現 通過抽象類 我們就可以做到嚴格限制子類的設計 使子類之間更加通用...