Java 中如何使用 this 访问本类中的实例属性
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.静态属性 也是不行的,编译器会直接拒绝。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















