C#中访问修饰符private,protected,internal,protected internao,public访问等级详解

C#中访问修饰符访问权限依次递增:
private < protected < internal < protected internal < public
1:private:私有的权限,可以用来修饰字段、属性和方法。只能在当前类中访问;字段、属性和方法的默认访问权限就是private。
2:protected:可以用来修饰字段、属性和方法。可以在当前类中访问,也可以在子类(包含子类的子类)及跨项目继承的子类中访问。
3:internal:可以用来修饰类、字段、属性和方法。在整个项目中生效。类的默认的访问权限是internal。
4:protected internal:可以用来修饰字段、属性、方法,在当前项目中生效,在跨项目的子类中生效。
5:public:可以用来修饰类、字段、属性和方法,在整个解决方案生效。

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

namespace _009修饰符访问权限测试
{
    class MyClass
    {
        private int privaterVar = 101;
        protected int protectedVar = 20;
        internal int internalVar = 30;
        public int publicVar = 40;

        private void privateMethod()
        {
            Console.WriteLine("This is a private method.");
        }

        protected void protectedMethod()
        {
            protectedVar = privaterVar;
            Console.WriteLine("This is a protected method.");
        }

        internal void internalMethod()
        {
            Console.WriteLine("This is a internal method.");
        }

        public void publicMethod()
        {
            Console.WriteLine("This is a public method.");
        }
    }
   class MyDervedClass:MyClass          //继承父类
    {
        public void test()
        {
            //Console.WriteLine(privateVar);    //不可以访问private类型变量
            //privateMethod();                  //不可以访问private类型方法

            Console.WriteLine(protectedVar);    //可以访问protected类型变量
            protectedMethod();                  //可以访问protected类型方法
            Console.WriteLine(protectedVar);        //可以通过父类中的运算获得private类型值传递

            Console.WriteLine(internalVar);     //可以访问internal类型变量
            internalMethod();                   //可以访问internal类型方法

            Console.WriteLine(publicVar);       //可以访问public类型变量
            publicMethod();                     //可以访问public类型方法
        }
    }

       
    
    class Program
    {
        static void Main(string[] args)
        {
            MyClass myclass = new MyClass();    //实例化

            不能访问private 和privateMethod
            //Console.WriteLine(myclass.privateVar);
            //myclass.privateMethod();

            不能访问protectedVar和protectedMethod
            //Console.WriteLine(myclass.protectedVar);
            //myclass.protectedMethod();

            //可以访问internalVar和internalMethod
            Console.WriteLine(myclass.internalVar);
            myclass.internalMethod();

            //可以访问publicVar和publicMethod
            Console.WriteLine(myclass.publicVar);
            myclass.publicMethod();

            MyDervedClass mydervedclass = new MyDervedClass();      //实例化继承类
            mydervedclass.test();              //可以通过访问包括protected类型的类访问             
            Console.ReadKey();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值