java入门(十七) | OOP(四)之this关键字

java入门(十七) | OOP(四)之this关键字

1.1 概念

Java中为解决变量的命名冲突和不确定性问题,引入关键字this代表其所在方法的当前对象的引用

  1. 构造方法中指该构造器所创建的新对象;

  2. 方法中指调用该方法的对象;

  3. 在类本身的方法或构造器中引用该类的实例变量(全局变量)和方法。

this只能用在构造器或者方法中,用于获得调用当前的构造器方法的对象引用。可以和任何的对象引用一样来处理这个this对象。

1.2 形式

this.name = name;

1.3 练习1:当变量名相同时

  1. 当成员变量和局部变量同名时,this用于区分成员变量和局部变量,this能调用出来的一定是成员变量
    如:this.name = name 中 左边是成员变量,右边是局部变量
package cn.qile.thisdemo;

//this的用法
public class Test1_this {
    public static void main(String[] args) {
        //创建Student对象测试
        Student s = new Student();

        Student s2 = new Student("rose");
        System.out.println(s2.name);//rose
    }
}

//创建Student类
class Student{
    String name;

    //提供构造方法
    public Student() {
        System.out.println("构造方法");
    }

    public Student(String name) {
        //1、变量使用有就近原则
//      name = name;//等号的左右两边使用的都是局部变量name,并没有给成员变量赋值

        //2、这时我们想要把等号左边的name表示成员变量
        //this代表的是本类,this能调用的是本类的成员,成员变量和成员方法
        this.name=name;
    }

}

总结:在调用变量时,记得变量的使用是有就近原则的,而this调用的肯定是本类的成员变量和成员方法

1.4 练习2:构造方法间的调用

package cn.qile.thisdemo;

//测试this调用构造方法
public class Test2_this {
    public static void main(String[] args) {
        //创建对象测试
        Zoo z = new Zoo();
        Zoo z2 = new Zoo("猴子");
    }
}
//创建Zoo类
class Zoo{
    //构造方法
    public Zoo() {
        //1、this在无参构造中  调用  含参构造
        //3、this关键字在构造方法中使用时,必须是第一条语句
//           this("大老虎");
        System.out.println("无参构造");
    }
    public Zoo(String n) {
        //2、this在含参构造中  调用 无参构造
        //3、this关键字在构造方法中使用时,必须是第一条语句
        this();
        System.out.println("含参构造"+n);
    }

}

总结

  1. this可以在构造方法之间互相调用
  2. 在调用时,this()必须是第一条语句
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » java入门(十七) | OOP(四)之this关键字