C#難點(diǎn)逐個(gè)擊破(5):類(lèi)的訪問(wèn)類(lèi)型
更新時(shí)間:2010年02月04日 13:23:34 作者:
類(lèi)的訪問(wèn)類(lèi)型有時(shí)也叫訪問(wèn)級(jí)別,使用以下訪問(wèn)修改符:Public、Protected、Private、internal、protected internal。
講這四類(lèi)之間的區(qū)別時(shí)有必要講解一個(gè)概念:程序集。程序集(Assembly),可以簡(jiǎn)單理解為編譯之后生成的.dll或.exe文件,相對(duì)于namespace是類(lèi)庫(kù)的邏輯組織形式,它可以稱(chēng)為程序類(lèi)庫(kù)的物理組織形式,msdn上描述“程序集包含描述它們自己的內(nèi)部版本號(hào)和它們包含的所有數(shù)據(jù)和對(duì)象類(lèi)型的詳細(xì)信息的元數(shù)據(jù)”。一般情況是一個(gè)程序集可以包含一個(gè)或者多個(gè)命名空間。
Public:對(duì)其他任何類(lèi)的任何方法都是可見(jiàn)的;
Private:本類(lèi)中定義的成員只有本類(lèi)的方法才能訪問(wèn);
Protected:本類(lèi)中的成員只有本類(lèi)的方法及繼承本類(lèi)的類(lèi)的方法才能訪問(wèn);
internal:本類(lèi)中的成員只有本類(lèi)所在的程序集中的任何類(lèi)的方法訪問(wèn);
protected internal:為protected與internal的并集。
因此從訪問(wèn)級(jí)別由高到低應(yīng)當(dāng)是Public>protected internal>internal>Protected>Private
類(lèi)的默認(rèn)修飾符為internal ,類(lèi)中的成員變量默認(rèn)修飾符為private,namespace可認(rèn)為修飾符為public。另一點(diǎn)在msdn上也提到繼承類(lèi)的訪問(wèn)級(jí)別不能大于被繼承類(lèi)的訪問(wèn)級(jí)別,如internal的類(lèi)不能繼承private的類(lèi)。
using System;
/******************************
* Chapter:C#難點(diǎn)逐個(gè)擊破(五)
* Author:王洪劍
* Date:2010-1-15
* Blog:http://www.51obj.cn/
* Email:walkingp@126.com
* Description:訪問(wèn)修改符
* ***************************/
namespace TestMain
{
public class A
{
public void Alert()
{
}
}
internal class B:A
{
internal new void Alert()
{
Console.WriteLine("you");
}
}
class Program
{
static void Main()
{
B b=new B();
b.Alert();
}
}
}
Public:對(duì)其他任何類(lèi)的任何方法都是可見(jiàn)的;
Private:本類(lèi)中定義的成員只有本類(lèi)的方法才能訪問(wèn);
Protected:本類(lèi)中的成員只有本類(lèi)的方法及繼承本類(lèi)的類(lèi)的方法才能訪問(wèn);
internal:本類(lèi)中的成員只有本類(lèi)所在的程序集中的任何類(lèi)的方法訪問(wèn);
protected internal:為protected與internal的并集。
因此從訪問(wèn)級(jí)別由高到低應(yīng)當(dāng)是Public>protected internal>internal>Protected>Private
類(lèi)的默認(rèn)修飾符為internal ,類(lèi)中的成員變量默認(rèn)修飾符為private,namespace可認(rèn)為修飾符為public。另一點(diǎn)在msdn上也提到繼承類(lèi)的訪問(wèn)級(jí)別不能大于被繼承類(lèi)的訪問(wèn)級(jí)別,如internal的類(lèi)不能繼承private的類(lèi)。
復(fù)制代碼 代碼如下:
using System;
/******************************
* Chapter:C#難點(diǎn)逐個(gè)擊破(五)
* Author:王洪劍
* Date:2010-1-15
* Blog:http://www.51obj.cn/
* Email:walkingp@126.com
* Description:訪問(wèn)修改符
* ***************************/
namespace TestMain
{
public class A
{
public void Alert()
{
}
}
internal class B:A
{
internal new void Alert()
{
Console.WriteLine("you");
}
}
class Program
{
static void Main()
{
B b=new B();
b.Alert();
}
}
}
相關(guān)文章
C#操作圖片讀取和存儲(chǔ)SQLserver實(shí)現(xiàn)代碼
用C#將Image轉(zhuǎn)換成byte[]并插入數(shù)據(jù)庫(kù)/將圖片數(shù)據(jù)從SQLserver中取出來(lái)并顯示到pictureBox控件上,接下來(lái)將為你詳細(xì)介紹下實(shí)現(xiàn)步驟,感興趣的你可以參考下2013-03-03Unity性能優(yōu)化Shader函數(shù)ShaderUtil.GetShaderGlobalKeywords用法示例
這篇文章主要為大家介紹了Unity性能優(yōu)化Shader函數(shù)ShaderUtil.GetShaderGlobalKeywords用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09C#/VB.NET實(shí)現(xiàn)PPT或PPTX轉(zhuǎn)換為圖像功能
由于大多數(shù)便攜式設(shè)備支持瀏覽圖片而不支持瀏覽PowerPoint 文件,所以相比較而言,圖像對(duì)于用戶(hù)而言更加友好。本文將利用C#/VB.NET實(shí)現(xiàn)PPT或PPTX轉(zhuǎn)換為圖像功能,需要的可以參考一下2022-08-08c#之用戶(hù)定義的數(shù)據(jù)類(lèi)型轉(zhuǎn)換介紹
c#允許定義自己的數(shù)據(jù)類(lèi)型,這意味著需要某些工具支持在自己的數(shù)據(jù)類(lèi)型間進(jìn)行數(shù)據(jù)轉(zhuǎn)換。方法是把數(shù)據(jù)類(lèi)型轉(zhuǎn)換定義為相關(guān)類(lèi)的一個(gè)成員運(yùn)算符,數(shù)據(jù)類(lèi)型轉(zhuǎn)換必須聲明是隱式或者顯式,以說(shuō)明怎么使用它2014-01-01