抽象類的認識

2021-09-25 19:29:24 字數 2025 閱讀 8343

在多型中父類方法的方法體是多餘的,所以就出現了抽象方法,有因為類中只要含有抽象方法則該型別必須為抽象類,abstract修飾的類為抽象類,修飾的方法叫做抽象方法。抽象方法只有宣告部分,而沒有具體的方法體。

乙個abstract類只關心他的子類是否具有某種功能,並不關心其自身功能的具體行為,功能的具體行為由子類負責實現,所以在父類的抽象方法也只是由方法而沒方法體的原因,他制定的應當由的動作那動作由子類去實現自身的方法。

要是建立抽象類的例項化則無法準確呼叫抽象類具體做什麼,就如在抽象類中不能加上由static的抽象方法因為可以直接加上抽象名加方法名呼叫但也如上面之會空調,不具有使用價值。抽象類可以沒有abstract方法**(為了迫使使用者必須通過繼承來使用這個類)**;但是一旦類中包含了abstract方法,則這個「類」就一定是abdtract類,即有抽象方法的類一定是抽象類。

1,繼承直接建立子類呼叫。

2,上轉型引用變數呼叫

// double price = 9;

// mammal mammal = new whale();

// mammal.move();/*因為mammal變數型別是mammal類,所以表面上呼叫的是mammal類中的方法;但因為mammal變數儲存了new whale()位址,

*所以再程式執行時jvm根據位址找到new whale(),實質是new whale().move(),即執行時呼叫的是子類重寫的方法 即多型

3,在多型前提下,父類中哪些被子類重寫的方法的方法體沒有實質的作用——>抽象方法:沒有方法體的方法

。 乙個類中如果有乙個抽象方法,則該類必須為抽象類。

4、抽象類有構造方法,但是不能建立物件.否則會顯示錯誤,只有抽象類的非抽象子類可以建立物件

抽象類建立物件會出錯。則也就是說乙個含有抽象方法的抽象類必須至少要有乙個非抽象類的子類,因為abstract類不能建立物件,就不能輸出本身的屬性和方法就得必須有乙個子類有乙個全部輸出抽象類中所有抽象方法在能使方法顯示出來。乙個抽象方法子類不能建立物件所以不能能顯示方法,在想呼叫就得在建立乙個非抽象的類。

5,如果乙個類沒有重寫完父類中的所有抽象方法,抽象方法不包含方法塊({}),則該類必須為抽象類。

抽象類的子類必須實現抽象類中的所有抽象方法。否則子類也必須是抽象類。

錯的

對的

6,抽象類中可以沒有抽象方法。

7,抽象類的抽象方法是多型的一種表現形式。

8,抽象類與普通類的區別。

抽象類前面由abstract修飾,而普通類沒有。

抽象類不能建立物件,普通類可以建立物件。

抽象類可以由抽象方法,普通類中一定沒有抽象方 法。

抽象方法:在類中沒有方法體的方法,就是抽象方法。

抽象類:含有抽象方法的類就叫抽象類。

抽象類中的抽象方法必須被實現!

如果乙個子類沒有實現父類中的抽象方法,則子類也成為了乙個抽象類!

抽象類中的普通方法,可以不必實現。

全面認識抽象類和介面

先來看一下普通類 class shape public void func 再來看一下抽象類 abstract class shape 就是加了adstract。抽象類1 包含抽象方法的類 抽象類,使用adstract關鍵字來修飾的 2 抽象方法是不能夠有具體的實現的 3 抽象類當中可以包含普通的成...

抽象類 抽象方法

抽象類 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...