講這四類之間的區別時有必要講解一個概念:程序集。組件(Assembly),可以簡單理解為編譯之後產生的.dll或.exe文件,相對於namespace是類別庫的邏輯組織形式,它可以稱為程式類別庫的實體組織形式,msdn上描述「組件包含描述它們自己的內部版本號和它們包含的所有資料和物件類型的詳細資訊的元資料」。一般情況是一個組件可以包含一個或多個命名空間。
Public:對其他任何類別的任何方法都是可見的;
Private:本類別中定義的成員只有本類別的方法才能存取;
Protected:本類別中的成員只有本類別的方法及繼承本類別的類別的方法才能存取;
internal:本類別中的成員只有本類別所在的程式集中的任何類別的方法存取;
protected internal:為protected與internal的並集。
因此從存取等級由高到低應當是Public>protected internal>internal>Protected>Private
類別的預設修飾符為internal ,類別中的成員變數預設修飾符為private,namespace可認為修飾符為public。另一點在msdn上也提到繼承類別的存取級別不能大於被繼承類別的存取級別,如internal的類別不能繼承private的類別。
using System; /****************************** * Chapter:C#难点逐个击破(五) * 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(); } } }
以上就是C#很難逐一擊破(5):類的訪問類型的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!