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();
}
}
}