天天看點

封裝與繼承

權限修飾符:

Java中的權限修飾符主要包括private、public、和protected,這些權限修飾符控制着對類和類的成員變量以及成員方法的通路。Private是私有的意思,public則是公開,protected是受保護的,還有一種就是不寫權限修飾符,代表預設的意思。

<a href="https://s3.51cto.com/wyfs02/M02/A7/83/wKioL1nnhlOxlZ6uAA0M16j4o6U051.png" target="_blank"></a>

  圈上的是最經常需要用的權限修飾符,使用private修飾符聲明了的屬性和行為,其他的類都不可以通路調用,相當于隐藏了起來,public則誰都可以通路調用,是公開的。例如:

<a href="https://s4.51cto.com/wyfs02/M01/08/D3/wKiom1nniRCh3h5zAAvlCdqaWsY649.png" target="_blank"></a>

封裝:

  封裝就是将對象的屬性和行為封裝起來,其載體就是類,類通常對客戶(程式員)隐藏其實作細節,這就是封裝的思想。采用封裝的思想保證了類的内部資料結構的完整性,應用該類的使用者不能輕易的直接操作此資料結構,隻能執行類允許公開的資料源。這樣就避免了外部操作對内部資料的影響,提高了程式的可維護性。封裝其實就是令其面向屬性更安全,面向使用者更簡單。

封裝代碼寫法是使用set和get;set是設定,get是得到。不想讓外部得到就拒絕提供get,不想讓外部設定就拒絕提供set。

  set和get是将屬性通過方法來指派,因為方法裡面可以寫很多代碼,是以通過一個方法的驗證後再指派給屬性就會安全很多,外部就不能夠随意操作裡面的屬性了。例如:

<a href="https://s2.51cto.com/wyfs02/M01/08/D3/wKiom1nniReBPYRiAA54PvJSAm0534.png" target="_blank"></a>

外部要對屬性指派時就得通過這個方法的驗證,使用了if語句來判斷給屬性賦的值是否有超出範圍,隻要結果為false都不會對屬性進行指派。

boolean類型的封裝有點差別,因為這個類型隻有兩個值。例如:

<a href="https://s1.51cto.com/wyfs02/M00/A7/83/wKioL1nnhmvRsOgNABDXccmG328772.png" target="_blank"></a>

boolean是用is來表示封裝方法,不同與其他類型使用get。

數組類型的封裝方式也不一樣,因為數組裡面有很多個資料,考慮到使用者的使用,需要将數組的封裝設計得更友善些,有時候可能使用時會出現對數組進行一個一個拿值的情況,是以需要寫多一個方法,因為封裝并不是寫set、get就行了,要學會考慮到使用者的使用,設計好安全性、友善性才是封裝的意義所在。例如:

<a href="https://s2.51cto.com/wyfs02/M02/08/D3/wKiom1nniS7zjflQABNzW2enkAc149.png" target="_blank"></a>

寫多一個方法就可以解決對數組進行單個拿值的情況

封裝的自動生成:

   在eclipse工具裡可以直接對屬性進行簡單的封裝生成。例如:

<a href="https://s5.51cto.com/wyfs02/M01/A7/83/wKioL1nnhoPR2TXEABCjXlrwjWk501.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M00/08/D3/wKiom1nniTrgub6uAAOpNn4gACE572.png" target="_blank"></a>

右鍵選好需要封裝的屬性,然後按照步驟就可以直接生成封裝。

一旦對屬性寫了set方法,這時就以方法名為準去操作了,不是以屬性名為準了。例如:

<a href="https://s3.51cto.com/wyfs02/M02/A7/83/wKioL1nnhoqjHj_bAAp1jSuMFbk954.png" target="_blank"></a>

這時就是以name為準,因為外部隻能看到name這個屬性。

繼承:

    繼承在面向對象開發思想中是一個非常重要的概念,它使整個程式架構具有一定的彈性,在程式中複用一些已經定義完善的類不僅可以減少軟體開發周期,也可以提高軟體的可維護性和可擴充性。繼承使得程式具有派生結構,可以升進行級擴充,首先需要有一個父類,父類實作了最基本的功能,如果需要再擴充更新不用改父類隻需要用一個子類繼承這個父類,在子類上進行編寫即可。派生結構:

<a href="https://s1.51cto.com/wyfs02/M01/08/D3/wKiom1nniUmyfTSFAA6jl0t-Li8461.png" target="_blank"></a>

車就是父類繼承于它的都是子類,子類之下又可以繼續進行派生擴充,是以使得程式具有一定的彈性。

繼承中的定律:

1.繼承了父類後除了父類的私有成員子類擁有父類的一切,也就是除了私有成員外的成員子類都可以通路調用。

2.在建立子類對象的時候,先建構父類對象然後再建構子類對象。

3.把子類對象建立出來後調用方法的時候,先調用子類,如果子類沒有再調用父類方法。

重寫父類方法:

   在父類方法出現問題,或者功能有所欠缺的時候,可以使用重寫父類方法來解決。父類不需要進行改動,修改都在子類中進行。

繼承的關鍵字是extends。例如:

<a href="https://s2.51cto.com/wyfs02/M00/A7/83/wKioL1nnhpuipjQSAAySfljm9YU489.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M02/08/D3/wKiom1nniViwrSqCAA0uobEs-Yc549.png" target="_blank"></a>

 Phone2繼承了Phone1,重寫了shengyin的方法,并增加了其他的方法,使其更新擴充。因為方法都是先調用子類的,子類沒有才會去調用父類,并且子類能直接調用父類的方法,是以new對象時隻new子類的對象就可以了。例如:

<a href="https://s4.51cto.com/wyfs02/M01/A7/83/wKioL1nnhqWzhuqZAATN5l0kgMo968.png" target="_blank"></a>

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/1974042,如需轉載請自行聯系原作者

繼續閱讀