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();
        }
Example #2
0
        /// <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());
        }
Example #3
0
        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();
        }