关键字 - this 和base

来源:互联网 发布:mysql增删改查 面试 编辑:程序博客网 时间:2024/05/01 12:28

this 和base被归于访问关键字,是用于实现继承机制的访问操作。

 

this  用于引用的当前实例,也可以引用继承来的方法

 

this的主要功能:

  • 限定被相似的名称隐藏的成员
  • 将对象作为参数传递到其他方法
  • 声明索引器
  • this 指代类对象本身,用于访问本类的所有常量,字段,属性和方法的成员。
  • this仅仅局限于对象内部,对象外部时无法看到的,这是this的基本思想

 

  * 在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用

  * 在类的方法中出现的this作为一个值类型,表示对调用该方法的对象的引用

  * 在结构的构造函数中出现的this作为一个变量类型,表示对正在构造的结构的引用

  * 在结构的方法中出现this作为一个变量类型,表示对调用该方法的结构的引用

 

base  用于从派生类中访问基类中的公有或受保护的成员,但只局限在构造函数、实例方法和实例属性访问器中。

 

base的主要功能:

 

  • 调用基类上已被其他方法重写的方法。
  • 指定创建派生类实例时应调用的基类构造函数
  • base常用于在派生类对象初始化时和基类通信
  • base可以访问积累的公有成员和受保护成员,私有成员不可以访问
  • 在多层继承中,base可以指向父类的方法有两种:
    • 一是有重载存在的情况下,base将指向直接继承的父类的方法
    • 在没有重载的情况下,base可以指向任何上级父类的公有或者受保护方法。

 

通用规则

 

  • 尽量少用或者不用this和base
  • 在静态成员中使用base和this都是不允许的,因为base和this访问的都是类的实例,也就是对象,而静态成员只能由类来访问,不能由对象来访问。
  • base是为了实现多态而设计的
  • 使用this或base关键字只能指定一个构造函数,不能同时将base和this作用在同一个函数上
  • base用于在派生类中访问重写的基类成员,而this用于访问本类的成员,当然也包括继承而来的公有或受保护成员
  • 除了base,访问基类成员的另外一种方式是:显示的类型转换来实现,只是这个方法不能为静态的方法。

 

原创粉丝点击