黑馬程式設計師 抽象類

2021-09-30 12:10:27 字數 2251 閱讀 3204

---------------------- asp.net+unity開發、.net培訓、期待與您交流! ----------------------

抽象類當編寫乙個類時,我們往往會為該類定義一些方法,這些方法是用來描述該類的行為方式,那麼這些方法都有具體的方法體。

但是有的時候,某個父類只是知道子類應該包含怎麼樣的方法,但是無法準確知道子類如何實現這些方法。

抽象方法的定義:通過abstract關鍵字來修飾的類稱為抽象類;

我的總結:

抽象類用private修飾,裡面可以有用private修飾的方法(沒有方法體),強制子類進行覆寫;

可以理解為:具有某些公共方法的乙個總結類。

可以定義被abstract修飾的抽象方法

抽象方法只有返回型別和方法簽名,沒有方法體。

備註:抽象類可以含有普通方法

抽象類不能建立例項物件(不能new)

需要子類覆蓋掉所有的抽象方法後才可以建立子類物件,否則子類也必須作為抽象類

列舉常見的幾個抽象類:

流的四個基本父類

inputstream,outputstream,reader,writer

我的總結:

抽象類是類的一種特殊情況:據有類的一切特點,但是不能例項化;一般的都得帶有抽象方法。

抽象類不可以例項化,有時看到的近似例項化是多型機制的體現,並不是真正的例項化。

eg:socket s = new socket();

outputstream os = s.getoutputstream();

左邊是outputstream型別變數的宣告,右邊是獲取抽象類outputstream的乙個例項物件!

package testdemo2;

abstract class person

class student extends person

public class demo2

}

abstract方法 

分析事物時,發現了共性內容,就出現向上抽取。會有這樣一種特殊情況,就是功能宣告相同,但功能主體不同。

那麼這時也可以抽取,但只抽取方法宣告,不抽取方法主體。那麼此方法就是乙個抽象方法。

abstract [非private訪問修飾符] 返回值型別 方法名稱(引數列表);

抽象方法要存放在抽象類中。

抽象方法也可以存在於介面中

eg:

package reviewdemo;

abstract class person3

}class newp extends person3

@override

void inof()

//不覆寫的話會報錯

}public class demo15

}

抽象類的體現-模板模式

抽象類是多個具體子類抽象出來的父類,具有高層次的抽象性;以該抽象類作為子類的模板可以避免子類設計的隨意性;

抽象類的體現主要就是模板模式設計,抽象類作為多個子類的通用模板,子類在抽象類的基礎上進行拓展,但是子類在總體上大致保留抽象類的行為方式;

編寫乙個抽象父類,該父類提供了多個子類的通用方法,並把乙個或多個抽象方法留給子類去實現,這就是模板設計模式;

模板模式應用的簡單規則:

1.抽象父類可以只定義需要使用的某些方法,其餘留給子類去實現;

2.父類提供的方法只是定義了乙個通用演算法,其實現必須依賴子類的輔助;

我的總結:

如果父類的方法不想被子類覆寫,那麼可以在前面加上final關鍵字修飾。

eg:

package reviewdemo;

//模板模式

//抽象類中包含很多的抽象方法,子類必須去覆寫!

abstract class method

}class square extends method

@override

double mul()

@override

double divid()

}class cirle extends method

@override

double mul()

@override

double divid()

}public class demo16

}

---------------------- asp.net+unity開發、.net培訓、期待與您交流! ----------------------

黑馬程式設計師 抽象類

asp.net android io開發s net培訓 期待與您交流!抽象類 abstract 當多個類中出現相同功能,但是功能主體不同,這時可以進行向上抽取,這時,只抽取功能定義,不抽取功能主體。抽象類的特點 1.抽象方法一定定義在抽象類中。2.抽象方法和抽象類都必須被abstract關鍵字修飾。...

黑馬程式設計師 抽象類 介面

asp.net unity開發 net培訓 期待與您交流!抽象類 abstract 1.抽象方法必須定義在抽象類中。2.抽象方法和抽象類必須被abstract修飾。3.抽象類不可以用new建立物件,因為呼叫抽象方法沒意義。4.抽象類中的方法要被使用必須由子類覆寫其所有的抽象方法後,建立子類物件呼叫,...

黑馬程式設計師 JAVA基礎 抽象類

asp.net unity開發 net培訓 期待與您交流!抽象類 抽象類的特點 1,抽象方法一定在抽象類中。2,抽象方法和抽象類都必須被abstract關鍵字修飾。3,抽象類不可以用new建立物件。因為呼叫抽象方法沒意義。4,抽象類中的抽象方法要被使用,必須由子類複寫起所有的抽象方法後,建立子類物件...