抽象类和封装
抽象,實(shí)際上是一個(gè)分析的過程,是根據(jù)需求的表述歸納實(shí)體的類型、屬性和行為,其產(chǎn)出物是類圖。類圖勾勒了實(shí)體應(yīng)該具備哪些屬性和行為,但未涉及細(xì)節(jié)。
而封裝,實(shí)則就是將抽象得到的模型轉(zhuǎn)變?yōu)榫唧w實(shí)現(xiàn)。它的要點(diǎn)是,盡可能對(duì)外隱藏細(xì)節(jié),Java 中的手段就是使用 private,是否簡(jiǎn)單粗暴地為所有屬性提供 getter 和 setter 呢?不建議這樣做,因?yàn)檫@樣做和將屬性定義為 public 沒有區(qū)別。
封裝的關(guān)鍵是,根據(jù)業(yè)務(wù)進(jìn)行分析。
有的屬性不能修改則不提供 setter,有的屬性的修改有限制規(guī)則,則需要在 setter 中進(jìn)行限定,有的屬性不希望外界獲取則不提供 getter(或聲明為私有的),有些方法或者函數(shù)僅僅是內(nèi)部使用的,也可以聲明為 private,這些都是具體問題具體分析的。
抽象,是歸納提煉;封裝則是在實(shí)現(xiàn)中依據(jù)業(yè)務(wù)需求盡量隱藏細(xì)節(jié)。
抽象類:
一個(gè)類包含了抽象方法,那它一定是抽象類;一個(gè)類是抽象類,它可以包含抽象方法,也可以不包含,也可以包含具體的方法。
抽象類不能實(shí)例化,但是可以包含構(gòu)造方法。
總結(jié)
- 上一篇: JSON 对象和字符串对象的互转
- 下一篇: Java中的抽象类