關於C#中的5種修飾符


1.關於C#中的5種修飾符

	 public (公有的)誰都可以訪問
	 private (私有的)只限於本類成員訪問。 子類和實例都不能訪問。
	 protected (受保護的)只限於本類和子類訪問,實例不能訪問。
	 internal  (內部的) 限於當前命名空間下訪問,其他命名空間不能訪問
	 protected internal(受保護內部的)只限於當前命名空間下的本類或子類訪問,實例和其他命名空間不能訪問

2.修飾符的詳細介紹

public (公有的)

public 共有的,這個比較好理解了,公有的也就是說誰都可以訪問它,不受任何限制,當前類,子類,實例對象,都可以訪問到。。
打個比方,就比如說家里有一個車,這個車主說了這是公用車,沒有鑰匙,誰來都可以用這個車,沒有什么限時。下面做個示例演示一下。
示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 測試
{
    class Program
    {
        static void Main(string[] args)
        {
            // Text1是public 修飾的,所以在這里是可以訪問,創建實例的
            Text1 text1 = new Text1();
            // t 也是public 修飾的,所以在這里是可以訪問,並對其賦值
            text1.vehicle = "怎么誰都能調用我!!! 原來我是public修飾過的";
            // 這里通過類的示例名去調用類的方法,方法也public 修飾的
            text1.show();
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 這個類 是用public 修飾的,就是說他是公有的 誰都可以訪問的
    /// </summary>
    public class Text1
    {
        public string vehicle;
        /// <summary>
        /// 這是一個public 修飾的測試方法,用來輸出的
        /// </summary>
       public void show()
        {
        	// 這里是一個輸出語句
            Console.WriteLine(vehicle);
        }
    }
}

private (私有的)

只能在當前類內部進行訪問使用,就算是子類,實例對象,都訪問不到。
還是以說家里的那個車,這回這個車主說了這是 私有的,就我一個人可以使用,其余的人誰也不行,就算是車主兒子也不能用。
示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 測試
{
    class Program
    {
        static void Main(string[] args)
        {
            // Text1是public 修飾的,所以在這里是可以訪問,創建實例的
            Text1 text1 = new Text1();

            // 這里通過類的示例名去調用類的方法,方法也public 修飾的
            text1.show();
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 這個類 是用public 修飾的,就是說他是公有的 誰都可以訪問的
    /// </summary>
    public class Text1
    {
        // 這是私有成員,他只能在Text1類中使用,在其他的地方是調用不到的
        private string vehicle = "我是private修飾的,所以我只能在Text1中使用";
        /// <summary>
        /// 這是一個public 修飾的測試方法,用來輸出的 
        /// </summary>
        public void show()
        {
            // 這里是一個輸出語句
            Console.WriteLine(vehicle);
        }
    }
}

protected (受保護的)

保護訪問。只限於本類和子類訪問,實例不能訪問。
還是說家里的那個車,這回車主說了,這個車是我家的寶貝,除了我自己家人,誰也不能用,我誰都不借。
示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 測試
{
    class Program
    {
        static void Main(string[] args)
        {
            // Text1是public 修飾的,所以在這里是可以訪問,創建實例的
            Text1 text1 = new Text1();

            // 這里通過類的示例名去調用類的方法,方法也public 修飾的
            text1.show1();
            Text2 text2 = new Text2();
            text2.show2();
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 這個類 是用public 修飾的,就是說他是公有的 誰都可以訪問的
    /// </summary>
    public class Text1
    {
        // 這是受保護的成員,他只能在Text1和Text1的子類可以使用
        protected string vehicle = "我是protected修飾的,所以我只能在Text1和Text1的子類可以使用";
        /// <summary>
        /// 這是一個public 修飾的測試方法,用來輸出的 
        /// </summary>
        public void show1()
        {
            Console.WriteLine("這是父類調用vehicle");
            // 這里是一個輸出語句
            Console.WriteLine(vehicle);
        }
    }
    /// <summary>
    /// 這里是用public 修飾的,並且繼承 Text1
    /// </summary>
    public class Text2 : Text1
    {
        /// <summary>
        /// 這是一個public 修飾的測試方法,用來輸出的 
        /// </summary>
        public void show2()
        {
            Console.WriteLine("這是子類調用vehicle");
            // 這里是一個輸出語句
            Console.WriteLine(vehicle);
        }
    }
}

internal (內部的)

內部訪問。只限於本項目內訪問,也就是說可以在當前的命名空間下面內部隨意訪問,其他命名空間下面不能是訪問。
示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 測試
{
    class Program
    {
        static void Main(string[] args)
        {
            // Text1是public 修飾的,所以在這里是可以訪問,創建實例的
            Text1 text1 = new Text1();
            text1.vehicle = "vehicle是在當前命名空間下面,可以訪問得到";
            // 這里通過類的示例名去調用類的方法,方法也public 修飾的
            text1.show1();
            
            Console.ReadKey();
        }
    }
    /// <summary>
    /// 這個類 是用public 修飾的,就是說他是公有的 誰都可以訪問的
    /// </summary>
    public class Text1
    {
        // 這是內部的的成員,他只能在 測試這個命名空間下面被訪問
        internal string vehicle ;
        /// <summary>
        /// 這是一個public 修飾的測試方法,用來輸出的 
        /// </summary>
        public void show1()
        {
            Console.WriteLine("這是父類調用vehicle");
            // 這里是一個輸出語句
            Console.WriteLine(vehicle);
        }
    }
    
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 測試;

namespace 測試2
{
    class Program
    {
        static void Main(string[] args)
        {
        	// Text1是public 修飾的,所以在這里是可以訪問,創建實例的
            Text1 text1 = new Text1();
            //vehicle 成員是用 internal修飾的,所以無法訪問
            //text1.vehicle = "無法訪問";
        }
    }
}

protected internal (受保護內部的)

這個 訪問修飾符 和protected 沒什么區別,這里是說內部受保護的,在外部訪問不到,protected受保護的,在外部同樣也訪問不到,至於在內部里面訪問,protected internal 和 單獨的protected 沒什么區別


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM