java -> this关键字

this关键字

  在之前学习方法时,我们知道方法之间是可以相互调用的,那么构造方法之间能不能相互调用呢?若可以,怎么调用呢?

this调用构造方法

  在之前学习方法之间调用时,可以通过方法名进行调用。可是针对构造方法,无法通过构造方法名来相互调用。

  构造方法之间的调用,可以通过this关键字来完成。

  构造方法调用格式:

  this(参数列表);

  构造方法的调用

  class Person {

      // Person的成员属性

      private int age;

      private String name;

      // 无参数的构造方法

      Person() {

      }

 

      // 给姓名初始化的构造方法

      Person(String nm) {

          name = nm;

      }

    // 给姓名和年龄初始化的构造方法

    Person(String nm, int a) {

        // 由于已经存在给姓名进行初始化的构造方法 name = nm;因此只需要调用即可

        // 调用其他构造方法,需要通过this关键字来调用

        this(nm);

        // 给年龄初始化

        age = a;

    }

}

注意:

  this到底代表什么呢?this代表的是对象,具体代表哪个对象呢?哪个对象调用了this所在的方法,this就代表哪个对象

  调用其他构造方法的语句必须定义在构造方法的第一行,原因是初始化动作要最先执行

成员变量和局部变量同名问题

  通过上面学习,基本明确了对象初始化过程中的细节,也知道了构造方法之间的调用是通过this关键字完成的。但this也有另外一个用途,接下来我们就学习下。

  当在方法中出现了局部变量和成员变量同名的时候,那么在方法中怎么区别局部变量成员变量呢?可以在成员变量名前面加上this.来区别成员变量和局部变量

  class Person {

      private int age;

      private String name;

 

    // 给姓名和年龄初始化的构造方法

    Person(String name, int age) {

        // 当需要访问成员变量是,只需要在成员变量前面加上this.即可

        this.name = name;

        this.age = age;

    }

 

    public void speak() {

        System.out.println("name=" + this.name + ",age=" + this.age);

    }

}

 

class PersonDemo {

    public static void main(String[] args) {

        Person p = new Person("张三", 23);

        p.speak();

    }

}

猜你喜欢

转载自www.cnblogs.com/miaoxingren/p/9375408.html