博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#中的访问修饰符

Posted on 2012-09-01 13:59  阳光梧桐  阅读(612)  评论(0)    收藏  举报

根据自己在学习C#过程中的经验,现整理出C#中的各种访问修饰符及其用法供初学者参考,也请大家不吝赐教。

1.C#中的访问修饰符主要有5种

访问修饰符

说明

public

公有访问。不受任何限制。

private

私有访问。只限于本类成员访问,子类和实例都不能访问。

protected

保护访问。只限于本类和子类访问,实例不能访问。

internal

内部访问。只限于本项目(程序集)内访问,其他不能访问。

protected internal

内部保护访问。只限于本项目或是本类和子类访问,其他不能访问。

具体见如下图示说明:  

2.命名空间(namespace)中成员的访问修饰符

能在命名空间中定义的成员有:类(class)、枚举(enum)、结构(struct)、接口(interface)、委托(delegate)。

命名空间下只能使用两种类型的访问修饰符,public和internal,如果没有显式的给出这些访问修饰符,则默认为internal。

namespace:隐式具有public类别,不能为其添加任何访问修饰符。

3.各类型(class,enum,struct,interface)中成员的访问修饰符

成员类型

成员默认修饰符

成员可被修饰符

class

private

public,private,internal,protected,protected internal

struct

private

public,private,internal

interface

public

none

enum

public

none

◆结构成员不能具有 protected 或 protected internal 可访问性,因为结构不支持继承。

◆接口成员隐式地具有 public 已声明可访问性。在接口成员声明中不允许使用访问修饰符。

◆枚举成员隐式地具有 public 已声明可访问性。在枚举成员声明中不允许使用访问修饰符。

4.非访问修饰符

C#中除访问修饰符外,还有很多非访问的修饰符:partial,abstract,sealed,static,virtual,override。

partial:部分类,可以将一个类分成几部分写在不同的文件中,最终编译时将合并成一个文件,且各个部分不能分散在不同程序集中。

abstract:抽象类,不能够创建该类的实例;修饰方法时表示该方法需要由子类来实现,如果子类没有实现该方法,那么子类同样是抽象类。含有抽象方法的类一定是抽象类。

sealed:密封类,该类不能够被继承;修饰方法时表示该方法不能被重写。

static:静态类,不能被实例化,既然不能被实例化,那么这个类也就不能够含有对象成员,即该类所有成员为静态;访问类成员时只能通过“类名.成员名”的方式访问。

virtual:修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以重写该方法。

override:表示该方法重写了父类的方法。