zoukankan      html  css  js  c++  java
  • this关键字

    this关键字的基本概念

      若在构造方法中出现了this关键字,则代表当前正在构造的对象。

      若在成员方法中出现了this关键字,则代表当前正在调用的对象。

     总结:

      在构造方法中this代表着当前正在构造的对象,在成员方法中调用的是当前正在调用的对象,无论是准备阶段在构造的对象

    还是调用阶段正在使用它的对象都是本类的对象,有上述案例可以看出,t1与t2打印出来的对象是不相同的,由此可证实上述说法

    得准确性

    工作原理

      在构造方法中和成员方法中访问成员变量时,编译器会加上this.的前缀,而this.相当于汉语中我的,当不同的对象调用同一个方法

    时,由于调用方法的对象不同导致this关键字不同,从而this.方式访问的结果也就随之不同。

    以下是我记录的几个案例,方便理解this关键字的使用方式:

    案例1:

     

     

      为什么显示出来的是默认值null和0?是因为程序在运行的过程遵循就近原则,在类中出现相同的名字时程序第一时间

    找到最近的name,也就是局部变量name而不是成员变量name;解决的办法在name前面加上this.即可;

    ThisTest(String name, int age){
      this.name = name;
      this.age = age;
    }

    案例2

    void grow(){

      age++;

    }

    void grow(int age){

      this.age +=age;

    }

      在案例2中,两个grow方法有何不同?在于他们使用成员变量age时有没有发生歧义?没有发生歧义所以不需要使用

    this关键字,发生歧义所以使用this关键字,因为在方法体中出现两个age令程序难以分辨他们分别处于什么角色?

     案例3,this关键字作为方法的返回值

       案例3中自定义成员方法getThisTest使用ThisTest作为返回值类型,为什么可以使用本类作为返回值类型?因为字符串的返回值类型是String,

    如果理解不了就说服自己,说服不了就让别人说服你。。。

      ThisTest作为返回值类型在其作用是最后接收返回的值ThisTest本身,所以return this表示返回正在调用类的自身(就是t3引用的实例化的类的自身),

    这时候t3调用ThisTest方法,将返回值赋值给t4,这样t4和t3指向了同一个地址;

    案例4:调用其他构造方法(该方法使用的比较少,了解即可)

     

    this关键字的使用方式:

      1、形参变量名与成员变量名同名,提高代码的可读性(开发的时候推荐使用该方法);

      2、没有产生歧义的成员变量不需要使用this关键字;

      3、当局部变量名与成员变量名相同时,在方法体中会优先使用局部变量(就近原则),若希望使用成员变量,则需要在

    成员变量的前面加上this.的前缀,明确要求该变量是成员变量(重中之重)。

      3、this关键字除了可以通过this.的方式调用成员变量和成员方法外,还可以作为方法的返回值(重点)。

      4、在构造方法的第一行可以使用this()的方式来调用本类中的其他构造方法(了解

  • 相关阅读:
    CArray类模板封装示例
    环形队列CQueue类模板示例
    CStack栈模板封装示例
    TSIC506驱动程序
    proteus虚拟串口实现
    js学习笔记(一)
    提升网页性能
    JS性能优化笔记搜索整理
    @font-face制作Web Icon
    原生js动画效果(源码解析)
  • 原文地址:https://www.cnblogs.com/xujiaqi/p/13562749.html
Copyright © 2011-2022 走看看