淺談C#基礎(chǔ)之類的訪問修飾符
1.類中成員的訪問修飾符
方位修飾符就是確定該成員能夠訪問(使用)的區(qū)域。C#中常用的有如下修飾符:pubic(公有)、private(私有)、internal(內(nèi)聯(lián))、protected(受保護(hù))。舉例說明各個修飾符的限制區(qū)域。
class TestClass
{
public int a = 0;
private int b = 0;
protected int c = 0;
pulic static int d=0;
}
TestClass類中變量a是公有類型,可以在類外方位,即類實(shí)例化后可以使用a;變量b只能在類內(nèi)訪問,即類內(nèi)部的函數(shù)可以使用b;變量c則是TestClass繼承類可以使用。
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í)例化對象tec,tec可以訪問a但不能訪問b、c。那么什么情況下可以訪問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;
}
}
先說c。c是受保護(hù)類型,其繼承類C可以訪問。是類B實(shí)例化對象仍然不可以訪問。但是B內(nèi)部可以訪問c。如下面所示,類內(nèi)訪問類內(nèi)無限制。
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。也就說B的繼承類無法訪問c;如下所示,D中無法訪問c。
class D : B
{
private void st()
{
B bo = new B();
int dd = bo.c;//wrong訪問受限制
}
}
static修飾符表明該字段或方法是類所有,不是某個具體對象的。TestClass類不同實(shí)例化時a、b、c的值不同,但d是相同的。如果說a、b、c相當(dāng)于每個人在哪個省,那么d表明大家都在中國。
class B:TestClass
{
TestClass tec = new TestClass();
int bb = tec.a;//wrong 錯誤原因是因為字段的初始值引用了非靜態(tài)字段
int cc = TestClass.d;
private void st()
{
B bo = new B();
int aa = tec.a;
int tt = bo.c;
}
}
小結(jié):
puclic修飾:類內(nèi),類外皆可;private:內(nèi)部;protect:類內(nèi)即其派生類。
相關(guān)文章
C#利用delegate實(shí)現(xiàn)Javascript的each方法
這篇文章主要為大家介紹了介紹了C#利用delegate實(shí)現(xiàn)Javascript的each方法,感興趣的朋友可以參考一下2016-01-01
C#?form-data上傳圖片流到遠(yuǎn)程服務(wù)器的詳細(xì)代碼
這篇文章主要介紹了C#?form-data上傳圖片流到遠(yuǎn)程服務(wù)器的詳細(xì)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
Unity實(shí)現(xiàn)移動物體到鼠標(biāo)點(diǎn)擊位置
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)移動物體到鼠標(biāo)點(diǎn)擊位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08
VS2010寫的程序在自己電腦可以運(yùn)行、其他電腦上不能運(yùn)行的解決方案
自己用Visual Studio 2010 旗艦版寫了一個軟件,在自己電腦上運(yùn)行完全沒有問題,但是拷貝到其他人電腦上之后不管雙擊還是以管理身份運(yùn)行,均沒有反應(yīng),進(jìn)程管理器中相關(guān)進(jìn)程也只是一閃而過2013-04-04
C#使用Twain協(xié)議開發(fā)一個高掃儀對接功能
這篇文章主要為大家詳細(xì)介紹了C#如何使用Twain協(xié)議開發(fā)一個高掃儀對接功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
C#實(shí)現(xiàn)數(shù)組元素的數(shù)據(jù)類型轉(zhuǎn)換方法詳解
這篇文章主要為大家介紹了C#中一維數(shù)組如何快速實(shí)現(xiàn)數(shù)組元素的數(shù)據(jù)類型的轉(zhuǎn)換,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04

