Java面向对象(OOP)--this关键字详解

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象(OOP)--this关键字详解相关的知识,希望对你有一定的参考价值。

1.5 this关键字

  • 在类中,可以使用this关键字表示一些特殊的作用。

1.5.1 this在类中的作用:

【区别成员变量和局部变量】

【调用类中的其他方法】


注:默认情况下,setName(“tom”)和this.setName(“tom”)的效果是一样的

【调用类中的其他构造器】

注:this的这种用法,只能在构造器中使用.普通的方法是不能用的.并且这种调用的代码只能出现在构造器中的第一句.

【示例】


1.5.2 this关键字在类中的意义

this在类中表示当前类将来创建出的对象

【例子】

class Student {
    private String name;

    public Student() {
        System.out.println("this = " + this);
    }

    public static void main(String[] args) {
        Student s = new Student();
        System.out.println("s = " + s);
    }
}

  • 运行后看结果可知,this和s打印的结果是一样的,那么其实也就是变量s是从对象的外部执行对象,而this是在对象的内部执行对象本身.
  • 这样也就能理解为什么this.name代表的是成员变量,this.setName(“tom”)代表的是调用成员方法,因为这俩句代码从本质上讲和在对象外部使用变量s来调用是一样的,s.name和s.setName(“tom”)。

【this和s打印出来的内存地址是一样的,使用==比较的结果为true。】

class Student {
    public Student getStudent() {
        return this;
    }

    public static void main(String[] args) {
        Student s1 = new Student();
        Student s2 = s1.getStudent();
        System.out.println("s1 == s2 ? " + (s1 == s2));//true
    }
}


【 类中的this是和s1相等还是和s2相等呢?】

class Student {
    private String name;

    public void printThis() {
        System.out.println("this = " + this);
    }

    public static void main(String[] args) {
        Student s1 = new Student();
        Student s2 = new Student();
        s1.printThis();
        s2.printThis();
    }
}

注:这句话是要这么来描述的。s1对象中的this和s1相等,s2对象中的this和s2相等,因为类是模板,模板中写的this并不是只有一个,每个对象中都有一个属于自己的this,就像是每个对象中都一个属于自己的name属性一样。



以上是关于Java面向对象(OOP)--this关键字详解的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript面向对象——JS OOP基础与JS 中This指向详解

JavaScript面向对象——JS OOP基础与JS 中This指向详解

面向对象(OOP)--OOP基础与this指向详解

Java面向对象中 this关键字的详解

Java面向对象(OOP)--面向过程 & 面向对象 & OOP详解

面向对象05构造器详解