淺談C#基礎(chǔ)之類(lèi)的訪問(wèn)修飾符
1.類(lèi)中成員的訪問(wèn)修飾符
方位修飾符就是確定該成員能夠訪問(wèn)(使用)的區(qū)域。C#中常用的有如下修飾符:pubic(公有)、private(私有)、internal(內(nèi)聯(lián))、protected(受保護(hù))。舉例說(shuō)明各個(gè)修飾符的限制區(qū)域。
class TestClass
{
public int a = 0;
private int b = 0;
protected int c = 0;
pulic static int d=0;
}
TestClass類(lèi)中變量a是公有類(lèi)型,可以在類(lèi)外方位,即類(lèi)實(shí)例化后可以使用a;變量b只能在類(lèi)內(nèi)訪問(wèn),即類(lèi)內(nèi)部的函數(shù)可以使用b;變量c則是TestClass繼承類(lèi)可以使用。
class B
{
private void st()
{
TestClass tec = new TestClass();
int aa = tec.a; //right
int bb = tec.b; //wrong
int cc = tec.c //wrong
}
TestClass 實(shí)例化對(duì)象tec,tec可以訪問(wèn)a但不能訪問(wèn)b、c。那么什么情況下可以訪問(wèn)b、c呢?
class C:TestClass
{
private void st()
{
TestClass tec = new TestClass();
C bo = new C();
int aa = tec.a;
int bb = tec.b;//wrong
int cc = tec.c;//wrong
int tt = bo.c;
}
}
先說(shuō)c。c是受保護(hù)類(lèi)型,其繼承類(lèi)C可以訪問(wèn)。是類(lèi)B實(shí)例化對(duì)象仍然不可以訪問(wèn)。但是B內(nèi)部可以訪問(wèn)c。如下面所示,類(lèi)內(nèi)訪問(wèn)類(lèi)內(nèi)無(wú)限制。
class TestClass
{
public int a = 0;
private int b = 0;
protected int c = 0;
pulic static int d=0;
private void os()
{
int a1 = a;
int a2 = b;
int a3 = c;
}
}
B繼承之后,c就變?yōu)閜rivate。也就說(shuō)B的繼承類(lèi)無(wú)法訪問(wèn)c;如下所示,D中無(wú)法訪問(wèn)c。
class D : B
{
private void st()
{
B bo = new B();
int dd = bo.c;//wrong訪問(wèn)受限制
}
}
static修飾符表明該字段或方法是類(lèi)所有,不是某個(gè)具體對(duì)象的。TestClass類(lèi)不同實(shí)例化時(shí)a、b、c的值不同,但d是相同的。如果說(shuō)a、b、c相當(dāng)于每個(gè)人在哪個(gè)省,那么d表明大家都在中國(guó)。
class B:TestClass
{
TestClass tec = new TestClass();
int bb = tec.a;//wrong 錯(cuò)誤原因是因?yàn)樽侄蔚某跏贾狄昧朔庆o態(tài)字段
int cc = TestClass.d;
private void st()
{
B bo = new B();
int aa = tec.a;
int tt = bo.c;
}
}
小結(jié):
puclic修飾:類(lèi)內(nèi),類(lèi)外皆可;private:內(nèi)部;protect:類(lèi)內(nèi)即其派生類(lèi)。
相關(guān)文章
C#讀寫(xiě)配置文件方式(config.ini)入門(mén)
這篇文章主要介紹了C#讀寫(xiě)配置文件方式(config.ini)入門(mén),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06C#中通過(guò)API實(shí)現(xiàn)的打印類(lèi) 實(shí)例代碼
這篇文章介紹了,C#中通過(guò)API實(shí)現(xiàn)的打印類(lèi) 實(shí)例代碼,有需要的朋友可以參考一下2013-08-08C#把EXCEL數(shù)據(jù)轉(zhuǎn)換成DataTable
這篇文章介紹了C#把EXCEL數(shù)據(jù)轉(zhuǎn)換成DataTable的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04C#實(shí)現(xiàn)軟件開(kāi)機(jī)自動(dòng)啟動(dòng)的兩種常用方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)軟件開(kāi)機(jī)自動(dòng)啟動(dòng)的兩種常用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-07-07C#結(jié)合AForge實(shí)現(xiàn)攝像頭錄像
最近由于興趣學(xué)習(xí)了下在C#上使用AForge錄制攝像頭視頻并壓縮編碼??傮w上來(lái)說(shuō)這個(gè)第三方.net視覺(jué)開(kāi)發(fā)庫(kù)還是比較穩(wěn)定的2017-09-09Unity3D實(shí)現(xiàn)人物移動(dòng)示例
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)人物移動(dòng)示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01C#操作Byte數(shù)組和十六進(jìn)制進(jìn)行互轉(zhuǎn)
這篇文章介紹了C#操作Byte數(shù)組和十六進(jìn)制進(jìn)行互轉(zhuǎn)的的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05利用C#修改Windows操作系統(tǒng)時(shí)間
這篇文章主要介紹了利用C#修改Windows操作系統(tǒng)時(shí)間,幫助大家更好的利用c#操作系統(tǒng),感興趣的朋友可以了解下2020-10-10