C#難點(diǎn)逐個(gè)擊破(5):類的訪問類型
更新時(shí)間:2010年02月04日 13:23:34 作者:
類的訪問類型有時(shí)也叫訪問級(jí)別,使用以下訪問修改符:Public、Protected、Private、internal、protected internal。
講這四類之間的區(qū)別時(shí)有必要講解一個(gè)概念:程序集。程序集(Assembly),可以簡(jiǎn)單理解為編譯之后生成的.dll或.exe文件,相對(duì)于namespace是類庫的邏輯組織形式,它可以稱為程序類庫的物理組織形式,msdn上描述“程序集包含描述它們自己的內(nèi)部版本號(hào)和它們包含的所有數(shù)據(jù)和對(duì)象類型的詳細(xì)信息的元數(shù)據(jù)”。一般情況是一個(gè)程序集可以包含一個(gè)或者多個(gè)命名空間。
Public:對(duì)其他任何類的任何方法都是可見的;
Private:本類中定義的成員只有本類的方法才能訪問;
Protected:本類中的成員只有本類的方法及繼承本類的類的方法才能訪問;
internal:本類中的成員只有本類所在的程序集中的任何類的方法訪問;
protected internal:為protected與internal的并集。
因此從訪問級(jí)別由高到低應(yīng)當(dāng)是Public>protected internal>internal>Protected>Private
類的默認(rèn)修飾符為internal ,類中的成員變量默認(rèn)修飾符為private,namespace可認(rèn)為修飾符為public。另一點(diǎn)在msdn上也提到繼承類的訪問級(jí)別不能大于被繼承類的訪問級(jí)別,如internal的類不能繼承private的類。
using System;
/******************************
* Chapter:C#難點(diǎn)逐個(gè)擊破(五)
* Author:王洪劍
* Date:2010-1-15
* Blog:http://www.51obj.cn/
* Email:walkingp@126.com
* Description:訪問修改符
* ***************************/
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ì)其他任何類的任何方法都是可見的;
Private:本類中定義的成員只有本類的方法才能訪問;
Protected:本類中的成員只有本類的方法及繼承本類的類的方法才能訪問;
internal:本類中的成員只有本類所在的程序集中的任何類的方法訪問;
protected internal:為protected與internal的并集。
因此從訪問級(jí)別由高到低應(yīng)當(dāng)是Public>protected internal>internal>Protected>Private
類的默認(rèn)修飾符為internal ,類中的成員變量默認(rèn)修飾符為private,namespace可認(rèn)為修飾符為public。另一點(diǎn)在msdn上也提到繼承類的訪問級(jí)別不能大于被繼承類的訪問級(jí)別,如internal的類不能繼承private的類。
復(fù)制代碼 代碼如下:
using System;
/******************************
* Chapter:C#難點(diǎn)逐個(gè)擊破(五)
* Author:王洪劍
* Date:2010-1-15
* Blog:http://www.51obj.cn/
* Email:walkingp@126.com
* Description:訪問修改符
* ***************************/
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#程序員應(yīng)該養(yǎng)成的程序性能優(yōu)化寫法
工作和生活中經(jīng)??梢钥吹揭恍┏绦蛟?寫代碼的時(shí)候只關(guān)注代碼的邏輯性,而不考慮運(yùn)行效率,其實(shí)這對(duì)大多數(shù)程序猿來說都是沒有問題的,不過作為一只有理想的CodeMonkey,我還是希望給大家分享一些性能優(yōu)化心得2017-08-08
C#基于SerialPort類實(shí)現(xiàn)串口通訊詳解
這篇文章主要為大家詳細(xì)介紹了C#基于SerialPort類實(shí)現(xiàn)串口通訊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
C#播放鈴聲最簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了C#播放鈴聲最簡(jiǎn)單實(shí)現(xiàn)方法,通過調(diào)用系統(tǒng)方法實(shí)現(xiàn)播放wav格式音頻文件的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12

