淺談C#基礎之類的存取修飾詞

來源:互聯網
上載者:User

1.類中成員的存取修飾詞

方位修飾符就是確定該成員能夠訪問(使用)的地區。C#中常用的有如下修飾符:pubic(公有)、private(私人)、internal(內聯)、protected(受保護)。舉例說明各個修飾符的限制地區。

複製代碼 代碼如下:class TestClass
{
public int a = 0;
private int b = 0;
protected int c = 0;

pulic static int d=0;
}

TestClass類中變數a是公有類型,可以在類外方位,即類執行個體化後可以使用a;變數b只能在類內訪問,即類內部的函數可以使用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 執行個體化對象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是受保護類型,其繼承類C可以訪問。是類B執行個體化對象仍然不可以訪問。但是B內部可以訪問c。如下面所示,類內訪問類內無限制。複製代碼 代碼如下: 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就變為private。也就說B的繼承類無法訪問c;如下所示,D中無法訪問c。複製代碼 代碼如下: class D : B
{
private void st()
{
B bo = new B();
int dd = bo.c;//wrong訪問受限制
}
}

static修飾符表明該欄位或方法是類所有,不是某個具體對象的。TestClass類不同執行個體化時a、b、c的值不同,但d是相同的。如果說a、b、c相當於每個人在哪個省,那麼d表明大家都在中國。複製代碼 代碼如下: class B:TestClass
{
TestClass tec = new TestClass();
int bb = tec.a;//wrong 錯誤原因是因為欄位的初始值引用了非靜態欄位
int cc = TestClass.d;
private void st()
{

B bo = new B();
int aa = tec.a;
int tt = bo.c;
}
}

小結:

puclic修飾:類內,類外皆可;private:內部;protect:類內即其衍生類別。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.