---------------------- 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,抽象類中的抽象方法要被使用,必須由子類複寫起所有的抽象方法後,建立子類物件...