在學(xué)習(xí)結(jié)構(gòu)體和方法的時(shí)候,都有提到訪問(wèn)修飾符的內(nèi)容。那么訪問(wèn)修飾符是用來(lái)干什么的?訪問(wèn)修飾符又和面向?qū)ο笕筇匦灾坏姆庋b有什么關(guān)系?
一、訪問(wèn)修飾符
1、定義
首先來(lái)看一下官方上對(duì)于訪問(wèn)修飾符的定義:
所有類型和類型成員都具有可訪問(wèn)型級(jí)別。該級(jí)別可以控制是否可以從你的程序集或其他程序集中的其他代碼中使用它們。
說(shuō)白了,訪問(wèn)修飾符相當(dāng)于是權(quán)限。
例如在公司里,你能做的,上級(jí)都能做;上級(jí)能做的,你不一定可以做。你可以摸魚,上級(jí)也可以摸魚;上級(jí)可以發(fā)工資,你卻只能領(lǐng)工資。
放在編程里也是一樣的,訪問(wèn)修飾符決定哪些代碼你可以隨意使用,而哪些是不允許你使用的。
2、權(quán)限
C# 中的訪問(wèn)修飾符一共有五個(gè),分別是 public
、private
、protected
、internal
、private protect
以及 protected internal
。
它們各自的權(quán)限如下表:
由上可見(jiàn),public
相當(dāng)于就是公共權(quán)限,在哪里都可以使用;private
相當(dāng)于是私人權(quán)限,有些秘密還是自己知道就好...
二、封裝
眾所周知,面向?qū)ο缶幊陶Z(yǔ)言有三大特性,分別是封裝、繼承和多態(tài)。
(1)定義
把一個(gè)或多個(gè)項(xiàng)目封閉在一個(gè)屋里或者邏輯的包中。
在面向?qū)ο蟪绦蛟O(shè)計(jì)方法論中,封裝是為了防止對(duì)實(shí)現(xiàn)細(xì)節(jié)的訪問(wèn)。
封裝也就是我們將寫好的、相關(guān)聯(lián)的程序代碼裝到一個(gè)類中,隱藏了對(duì)象中的屬性和實(shí)現(xiàn)細(xì)節(jié)。當(dāng)要使用其中的某個(gè)功能,只需要調(diào)用該類即可以。
(2)封裝和訪問(wèn)修飾符
那么封裝和訪問(wèn)修飾符之間又有什么關(guān)聯(lián)呢?
上面說(shuō)到封裝就是把相關(guān)完整的代碼放在一塊,只要關(guān)聯(lián)類的調(diào)用,就離不開要討論訪問(wèn)修飾符。
例如,我們封裝好了一個(gè)類,類中有些變量或者方法允許所有人都可以使用,就可以使用 public
來(lái)修飾變量和方法;但是有些內(nèi)容,我希望是在這個(gè)類中才能使用,其他人無(wú)權(quán)使用,那么就可以使用 private
來(lái)修飾變量和方法。
因此,需要根據(jù)所要使用對(duì)象來(lái)指定訪問(wèn)修飾符,這也是封裝中很重要的一點(diǎn)。
(3)優(yōu)點(diǎn)
- 提高數(shù)據(jù)的安全性 - 調(diào)用者不能修改某個(gè)私有的成員屬性,確保了私有屬性的數(shù)據(jù)安全。
- 提高代碼可重用性 - 將一系列相關(guān)代碼封裝起來(lái),調(diào)用者想要實(shí)現(xiàn)其中功能,只要知道調(diào)用方法來(lái)使用即可。便于可重復(fù)使用,減少了大量代碼的產(chǎn)生。
- 隱藏具體實(shí)現(xiàn) - 調(diào)用者只需要知道調(diào)用方法,而不需要直到具體的實(shí)現(xiàn)過(guò)程。
三、總結(jié)
本篇文章簡(jiǎn)單地記錄了關(guān)于訪問(wèn)修飾符以及面向?qū)ο蠓庋b的一些基本概念。
接下來(lái)將學(xué)習(xí)關(guān)于面向?qū)ο蟮睦^承和多態(tài)的內(nèi)容。