什么是修饰符?
修饰符是用于限定类型以及类型成员的申明的一种符号。
访问修饰符有哪些?
4个访问修饰符(是添加到类、结构或成员声明的关键字)
Public:公有的,是类型和类型成员的访问修饰符。对其访问没有限制。
Internal:内部的,是类型和类型成员的访问修饰符。同一个程序集中的所有类都可以访问
Private:私有的,是一个成员访问修饰符。只有在声明它们的类和结构中才可以访问。
Protected::受保护的,是一个成员访问修饰符。只能在它的类和它的派生类中访问。
protected internal:访问仅限于当前程序集或从包含类派生的类型。
(在这里同一个程序集是指同一个.cs文件,不同的.cs文件的命名空间省略)
类修饰符
| Static: 声明属于类型本身而不是属于特定对象的成员。 |
| Abstract:抽象类,只能是其他类的基类。类中的方法只声明不实现,方法的实现在他的派生类中完成。 |
| Sealed:指定类不能被继承。 |
成员修饰符
Partial:在整个同一程序集中定义分部类和结构,详解见问题1。
Virtual:用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象
Override:提供从基类继承的成员的新实现
New:作修饰符,隐藏从基类成员继承的成员,在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。作运算符,用于创建对象和调用构造函数。
Extern:用于声明在外部实现的方法。 extern 修饰符的常见用法是在使
常见成员类型的访问修饰符?
(1)接口(interface)
接口成员访问修饰符默认为public,且不能显示使用访问修饰符。
(2)类(class)
构造函数默认为public访问修饰符。
析构函数不能显示使用访问修饰符且默认为private访问修饰符。
类的成员默认访问修饰符为private;
(3)枚举(enum)
枚举类型成员默认为public访问修饰符,且不能显示使用修饰符。
(4)结构(struct)
结构成员默认为private修饰符。
结构成员无法声明为protected成员,因为结构不支持继承。
(5)嵌套类型
嵌套类型的默认访问修饰符为private。和类,结构的成员默认访问类型一致。
访问修饰符有哪些需要注意?
·一个成员或类型只能有一个访问修饰符,使用 protected internal组合时除外。
·如果在成员声明中未指定访问修饰符,则使用默认的可访问性
·Virtual,override和new 的区别
1. virtual和override配套使用。在基类base中声明了虚方法method()并用virtual修饰,在子类derived中重写方法method()并用override修饰。那么当将子类的实例赋予基类的对象(不需要强制转换)时即BaseBclass= new Derived();Bclass.Method()是调用了子类的method()方法,而不是基类的。所以
2. new不需要和virtual配套使用。在基类base中声明了方法method(),在子类derived中声明了同名的方法method()并用new修饰。那么当将子类的实例赋予基类的对象时即BaseBclass= new Derived();Bclass.Method()是调用了基类类的method()方法,而不是子类的。
3. 这说明,override可以覆盖基类的方法,让基类的方法以子类的内容实现,而new不用来覆盖基类的方法,而是全新定义一个子类的方法,这个方法只属于子类,与基类的方法无关,只是名字上相同而已.
类型成员默认的可访问性
属于 | 默认的成员可访问性 | 该成员允许的声明的可访问性 |
enum | public | 无 |
class | private | public protected internal private protected internal |
interface | public | 无 |
struct | private | public internal private |
参考:
https://msdn.microsoft.com/zh-cn/library/wxh6fsc7.aspx
http://blog.youkuaiyun.com/susan19890313/article/details/7575228