static void Main(string[] args) { //public,private,internal,protected,internal protected //public 对外开放 //private 对外不开放 Person person = new Person(); Console.WriteLine(person.GetAge()); //internal 对同一个Assembly(程序集)开放 //assembley vs namespace,一个assembly里可以声明多个命名空间 //物理的包vs逻辑的概念 AnotherNamespaceClass anc = new AnotherNamespaceClass(); Console.WriteLine(anc.internalString); //protected 本身的Class或者继承它的Class里可用 Man man = new Man(); Console.WriteLine(man.GetPersonName()); //internal protected Class1 class1 = new Class1(); //Console.WriteLine(class1); Class2 class2 = new Class2(); //Console.WriteLine(class2); Console.WriteLine(class2.GetString2()); Console.WriteLine(class2.GetString2()); Console.ReadLine(); }
/// <summary> /// 封裝,並透過存取修飾詞,來控制它的權限 /// public, private, internal, protected, internal protected /// internal:在 Assembly 程序集內可叫用,『方案右鍵』 -> 『屬性』 /// C# 輸出有兩種 .exe 可執行文件, .dll library庫文件 -> 都屬於 Assembly /// assembly 與 namespace:可引用多個命名空間 /// protected:本身的 class 或繼承於它的 class 可叫用 /// </summary> /// <param name="args"></param> static void Main(string[] args) { // public, private, internal, protected, internal protected Person p = new Person(); p.Age = 18; Console.WriteLine(p.Age); Console.WriteLine(p.GetAge()); // namespace:using CSharp極客學園.物件導向.封裝.Another; AnotherNamespaceClass an = new AnotherNamespaceClass(); Console.WriteLine(an.internalString); // Assembly 『方案總管』-> 『參考』 -> 右鍵『加入參考』 -> 專案 -> 勾選 AnotherAssembly。 // using AnotherAssembly; Class1 c1 = new Class1(); // protected Man m = new Man(); Console.WriteLine(m.GetPersonName()); }
static void Main(string[] args) { // public , private , internal, protected , internal protectd //public Person p = new Person(); p.GetAge(); //private //p.age; // internal 在 assbemly中都可以使用 // 注意assbemly 和 namespace 的区别 AnotherNamespaceClass other = new AnotherNamespaceClass(); //另一个命名空间的使用 Class1 anotherA = new Class1(); //另一个程序集 Console.Write(other.internalStr); //internal,.本程序集可以访问 Man man = new Man(); Console.Write(man.GetPerSonName());//protect //internal protect, 其他assembly 继承本assembly某些字段, 也可以访问 Console.ReadLine(); }