Net复习笔记:第六部分:base和this

【1.是否可以在静态方法中使用base和this,为什么?】

在静态成员中使用base和this都是不允许的。原因是,base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问

【2.base常用于哪些方面?this常用于哪些方面?】

  base常用于,在派生类对象初始化时和基类进行通信

this指代类对象本身,用于访问本类的所有常量、字段、属性和方法成员,而且不管访问元素是任何访问级别。因为,this仅仅局限于对象内部,对象外部是无法看到的,这就是this的基本思想。另外,静态成员不是对象的一部分,因此不能在静态方法中引用this

【3.可以base访问基类的一切成员吗?】

  base可以访问基类的公有成员和受保护成员,私有成员是不可访问的

【4.如果有三层或者更多继承,那么最下级派生类的base指向那一层呢?例如.NET体系中,如果以base访问,则应该是直接父类实例呢,还是最高层类实例呢?】

在多层继承中,base可以指向的父类的方法有两种情况:一是有重载存在的情况下,base将指向直接继承的父类成员的方法,例如Audi类中的ShowResult方法中,使用base访问的将是Car.ShowResult()方法,而不能访问Vehicle.ShowResult()方法;而是没有重载存在的情况下,base可以指向任何上级父类的公有或者受保护方法,例如Audi类中,可以使用base访问基类Vehicle.Run()方法

【5.以base和this应用于构造函数时,继承类对象实例化的执行顺序如何? 】

 

 

    尽量少用或者不用base和this。除了决议子类的名称冲突和在一个构造函数中调用其他的构造函数之外,base和this的使用容易引起不必要的结果。

    在静态成员中使用base和this都是不允许的。原因是,base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问。

    base是为了实现多态而设计的。

    使用this或base关键字只能指定一个构造函数,也就是说不可同时将this和base作用在一个构造函数上。

    简单的来说,base用于在派生类中访问重写的基类成员;而this用于访问本类的成员,当然也包括继承而来公有和保护成员。

    除了base,访问基类成员的另外一种方式是:显示的类型转换来实现。只是该方法不能为静态方法。

 

posted @ 2014-01-23 16:42  瀚海行舟  阅读(128)  评论(0编辑  收藏  举报