Java 中如何使用 this 访问本类中的实例属性
作者:SunnyJourney
时间:2026-07-04
浏览:1
this关键字用于区分同名形参与实例变量,避免赋值歧义;只能在非静态上下文(实例方法、构造器)中使用,不可用于静态方法或访问静态属性。静态属性应通过类名访问。
this 用于区分同名形参与实例变量,避免赋值歧义;只能在非静态上下文中使用,不可用于静态方法或访问静态属性。

Ja va 里的 this 关键字,说白了就是“当前对象”的代名词。它的出场率很高,而最核心的用法,就是帮我们**区分形参名和实例变量名**——尤其是当它们撞名字的时候。
为什么需要 this 访问实例属性?
想象一下,你在写一个构造器或 setter 方法,参数名和类的成员变量名刚好相同。这时候,直接写变量名,编译器会默认把它当作局部变量(也就是参数),而不是你想赋值的那个实例变量。怎么办?用 this.变量名 就能明确告诉编译器:我要操作的是当前对象的属性,不是参数。
典型场景:构造器中初始化同名字段
最经典的例子就是构造器赋值:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name; // this.name 指实例属性,name 指参数
this.age = age; // this.age 指实例属性,age 指参数
}
}
- 如果不写
this.,直接写name = name,等号两边指的其实是同一个参数,结果就是参数给自己赋值,实例变量根本没被碰过。 this.name就相当于说“当前对象的 name 属性”,含义一清二楚,歧义解除。
其他可用 this 访问实例属性的地方
构造器之外,还有几个常见场景也离不开 this:
- setter 方法中:比如
public void setName(String name) { this.name = name; },道理和构造器完全一样。 - 实例方法内部:虽然直接写属性名也能访问,但有时为了代码可读性,显式加上
this会让人一眼看出“这是当前对象的成员”。比如this.getName()或return this.name;。 - 链式调用:在方法最后
return this;,返回当前对象,方便连续调用多个方法。
注意点
需要特别记住:this 只能在**非静态上下文**里用。也就是说,它只能在实例方法、构造器或实例初始化块中间出现。static 方法里没有“当前对象”的概念,所以不能写 this——编译阶段就会报错。
同样,静态属性属于类本身,应该通过 类名.静态属性 来访问,用 this.静态属性 也是不行的,编译器会直接拒绝。
作者最新文章
图几
2026-09-16 17:43
SQL中ROUND函数对0.5的处理机制及强制四舍五入方法
2026-09-15 14:19
JS金额计算怎么避免四舍五入误差
2026-09-14 17:32
韩国8月携号转网数据:Galaxy Z8系列iPhone用户转化率约为Z7系列2倍
2026-09-08 17:02
AE基础教程:如何创建合成并制作关键帧动画
2026-09-04 09:27
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































