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指向详解