【Java 基础】3 面向对象 - this

- 第 150 篇 -
Date: 2025 - 11- 16
Author: 郑龙浩(仟墨)

文章目录

  • [【Java 基础】](#【Java 基础】)
    • [3 面向对象 - this](#3 面向对象 - this)
      • [3.1 介绍](#3.1 介绍)
      • [3.2 This 核心作用:](#3.2 This 核心作用:)
      • [3.3 示例代码 + 关键说明](#3.3 示例代码 + 关键说明)

【Java 基础】

3 面向对象 - this

3.1 介绍

this 就是一个变量,可以用在方法 中,用于拿到当前类中的对象

  • 哪个对象调用这个方法 ,这个方法中的this就指向(表示)哪个对象
  • 例如:若对象 s1调用 fun()方法,则 fun()中的 this就代表 s1对象

3.2 This 核心作用:

  • 解决成员变量与局部变量同名时的访问冲突

  • 当方法参数或局部变量与类的成员变量同名时,使用 this明确指向当前对象的成员变量,避免歧义

3.3 示例代码 + 关键说明

如下:

  • 若直接写 name = name,编译器无法区分两个 name,赋值无效。
  • this实际指向的是对象实例 (如 s1)的成员变量,而非类的抽象定义
  • 可以理解为类为模板,对象为具体实体,this用于操作当前实体的数据

Test.java 文件

java 复制代码
package zhenglonghao.constructor;

public class Test {
    public static void main(String[] args) {
        Student s1 = new Student("ZLH", 20, "男");

        // 输出信息
        System.out.println("姓名:" s1.name + ",年龄:" + s1.age + ",性别:" + s1.sex);
    }
}

Student.java 文件

java 复制代码
// ====== Student.java 文件======
package zhenglonghao.constructor;

public class Student {
    String name;
    int age;
    String sex;

    // 无参构造器
    public Student() {}

    // 有参构造器(姓名和年龄)
    public Student(String name, int age, String sex) {
        
        this.name = name; // this.name 指向当前对象的成员变量; 右侧 name 为构造器参数
        // 如果直接写name = name,编译器无法区分两个 name,赋值无效,所以这里的this.name就是表示「对象的变量name」,而不是方法中的变量「name」
        this.age = age; // 同上
  	    this.sex = sex; // 同上
    }
}
相关推荐
懂点Tech10 分钟前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
comedate23 分钟前
SMLib 的 Examples 导读:PyAPI / SM_API / SMLib 三组示例怎么读
python·cad·smlib·examples·sm_api
云和数据.ChenGuang28 分钟前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
摇滚侠38 分钟前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试1 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
美狐美颜SDK开放平台1 小时前
视频美颜SDK试用DEMO阶段应该测试什么?直播APP接入实操指南
开发语言·人工智能·深度学习·音视频·美颜sdk·直播美颜sdk·第三方美颜sdk
dtq04241 小时前
C++小案例 - 日志实战
开发语言·c++
万化冥合2 小时前
PyBox屏幕键盘如何辅助演示键盘操作?
python·计算机外设
星夜离尘562 小时前
MATLAB ADC 码流触顶诊断:命中数、缺口分段与削顶不可辨识性
开发语言·matlab
车软学堂2 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化