其他修饰符
new:
作用:
- 用作于实例新对象;
- 用作于继承中函数的隐藏;
static(静态):
作用:
- static可以修饰类以及类成员(类中的全局成员);
- static修饰类,则类中的成员也全部都是static;
- 静态类中不允许实例化;
- 静态类中的公开成员直接使用类名点进行访问;
- 非静态类中的公开静态成员通过类名点访问,非静态成员通过实例化对象点访问;
virtual(虚拟):
作用:
- 设置虚拟成员,放在正常类中,这个类可以直接实例对象进行使用,也可以在其派生类中对虚拟成员进行重写使用
abstract(抽象):
作用:
- 抽象成员,必须放在抽象类中,抽象成员在抽象类中只有成员的声明不允许有成员的实现,抽象类不能实例成对象,抽象成员在其派生类中实现后方可被使用;
override(重写):
作用:
- 派生类中的成员可以使用override,前提是基类中的相同命名成员必须是virtual或许abstract;
sealed(密封):
作用:
- 密封类,最终类,不允许被继承
- 类:对于类代表密封,表示该类不允许被继承;
- 属性和方法:对于属性和方法,成员重写已继承的虚拟成员,但任何派生类中的任何成员都不能重写该成员,该修饰符必需和override一起使用。
this:
作用:
- 在一个类的成员内部,this关键字代表对象自身,也可以使用this关键字对类自身的成员进行访问;
- 用于引用类的当前实例,也包括继承而来的方法,通常可以隐藏this;
MSDN中的小结功能主要包括:
-
- 限定被相似的名称隐藏的成员;
- 将对象作为参数传递到其他方法;
- 声明索引器:this指代类对象本身,用于访问本类的所有常量字段、属性和方法成员,而且不管访问元素是任何访问级别;因为this仅仅局限于对象内部,对象外部是无法看到的;
- 静态成员不是对象的出一部分,所以不能在静态方法中引用this;
base:
作用:
- 在一个类中代表其父类,可以使用base访问父类的成员;
- 用于在派生类中实现对基类公有或受保护成员的访问,但只局限在构造函数、实例方法和实例属性访问器中;
MSDN中小结的具体功能包括
- 调用基类上已被其他方法重写的方法;
- 指定创建派生类实例时应调用的基类构造函数
- base常用于
- 在派生类对象初始化和基类进行通信时,base可以访问基类的公有成员和受保护成员,私有成员是不可访问的
- 在多层继承中,base可以指向的父类的方法有两种情况:
- 有重载存在的情况下:base将指向直接继承的父类成员的方法;
- 在没有重载的情况下,base可以指向上级父类的公有或者受保护的方法;
base和this的通用规则:
- 尽量少用或者不用base和this,除了避开子类的名称冲突和在一个构造函数中调用其他的构造函数之外,base和this的使用容易引起不必要的结果;
- 在静态成员中使用base和this都是不允许的,因为base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问.
- base是为了实现多态而设计的
- 使用this或者base关键字只能指定一个构造函数,也就是说不能将base和this同时作用在一个构造函数上;
- 简单来说base用于在派生类中访问重写的基类成员;而this用于访问本类的成员,当然也包括继承而来的公有和保护成员;
- 除了base,访问基类的另一种方式是:显式的类型转换来实现,只是该方法不能为静态方法;