C#中修饰符和访问修饰符的总结
C#中的修饰符:C#中有三类修饰符,分别是访问修饰符、类修饰符和成员修饰符。
(1)访问修饰符(4个)
public定义公共类型;
protected定义保护类型;
private定义私有类型;
internal定义内部类型。
(2)类修饰符(2个)
abstract用于修饰抽象类;
sealed用于修饰最终类。
(3)成员修饰符(8个)
abstract定义抽象函数;
const定义常量;
event定义事件;
extern告诉编译器在外部实现;
override定义重载;
readonly定义只读属性;
static用来声明静态成员;
virtual定义虚函数
C#中访问修饰符总共为5类:分别是public.private.protected.internal.protected internal.
访问修饰符 | 说明 |
public | 公共访问,不收任何限制 |
private | 私有访问,只限制于本类成员访问,子类,实例都不能访问 |
protected | 保护访问,只限于本类和子类访问,实例不能访问。 |
internal | 内部访问,只限于本项目内访问,其他不能访问。 |
protected internal | 内部保护访问,只限于本项目或者子类访问,其他不能访问。 |
再结合实例,加深理解public、private、protected、internal和protected internal的作用范围。
新建立一个控制台应用程序,在解决方案中添加一个类库项目,其中类文件代码如下所示
//类库中的三个类
using System;
using System.Collections.Generic;
using System.Text;
namespace AccessModifier
{
public class AccessModifierClass
{
public string GetPublicString()
{
return"Public String";
}
private string GetPrivateString()
{
return "Private String";
}
internal string GetInternalString()
{
return "Internal String";
}
protected internal string GetProtectedInternalString()
{
return "Protected Internal String";
}
void AvailableAccessModifier()
{
this.GetPublicString();
this.GetPrivateString();
this.GetInternalString();
this.GetProtectedInternalString();
this.GetProtectedString();
}
}
public class TestAccessModifierClass1
{
void AvailableAccessModifier()
{
AccessModifierClass item = new AccessModifierClass();
item.GetPublicString();
item.GetInternalString();
item.GetProtectedInternalString();
}
}
public class TestAccessModifierClass2 : AccessModifierClass
{
void AvailableAccessModifier()
{
AccessModifierClass item = new AccessModifierClass();
item.GetPublicString();
item.GetInternalString();
item.GetProtectedInternalString();
base.GetProtectedString();
}
}
}
AccessModifierClass是我们的访问修饰符类,里面有五种访问修饰符
在TestAccessModifierClass1类中的AvailableAccessModifier()方法只能访问public、Internal和Protected Internal方法。
TestAccessModifierClass2类继承自AccessModifierClass类,所以它的AvailableAccessModifier()方法可以访问public,internal,protected和protected internal方法。
在新建一个工程,且引用AccessModifierClass类的dll,代码如下。
using System;
using System.Collections.Generic;
using System.Text;
using AccessModifier;
namespace AccessModifierApp
{
public class AccessModifierAppClass1
{
void AvailableAccessModifier()
{
AccessModifierClass item = new AccessModifierClass();
item.GetPublicString();
}
}
public class AccessModifierAppClass2 : AccessModifierClass
{
void AvailableAccessModifier()
{
AccessModifierClass item = new AccessModifierClass();
item.GetPublicString();
base.GetProtectedString();
base.GetProtectedInternalString();
}
}
public class program
{
public static void Main()
{
}
}
}
AccessModifierAppClass1类的AvailableAccessModifier()方法只能访问public方法。
AccessModifierAppClass2类继承自AccessModifierClass类,所它的AvailableAccessModifier()方法