• 3.5 This关键字


     思维导图:

     3.5.1 使用this关键字调用本类的属性

    ### 笔记: 3.5 `this`关键字

    ---

    #### **概述**:
    在Java中,`this`关键字用于引用当前对象的实例。当类的成员变量与构造方法或方法中的参数名称发生冲突时,我们可以使用`this`来区分。`this`关键字在Java中有三种主要的用途:

    1. 调用当前类中的属性。
    2. 调用成员方法。
    3. 调用构造方法。

    ---

    #### **1. 使用`this`调用本类中的属性**:
    当局部变量(如方法或构造方法的参数)的名称与类的成员变量名称相同时,可以使用`this`来指代当前对象的成员变量。

    **问题示例**:

    1. class Student {
    2.     private String name;
    3.     private int age;
    4.     public Student(String name, int age) {
    5.         age = age; 
    6.     }
    7.     public String read() {
    8.         return "我是:" + name + ", 年龄:" + age;
    9.     }
    10. }

    上述代码中,构造方法的参数名称与对象的成员变量名称相同,导致成员变量`age`没有被正确初始化。

    **运行结果**: "我是:null, 年龄:0"

    **解决方案**:
    使用`this`关键字来区分成员变量与构造方法的参数。

    1. public Student(String name, int age) {
    2.     this.age = age;
    3. }

    这样,使用`this.age`来表示类的成员变量`age`,而单独的`age`则代表构造方法的参数。

    ---

    #### **2. 使用`this`调用成员方法**:
    这种情况较为少见,但你可以使用`this`关键字来调用当前对象的其他方法。例如, `this.someMethod();`

    #### **3. 使用`this`调用构造方法**:
    在某个构造方法内部,你可以使用`this()`来调用该类的其他构造方法。这常用于构造方法的重载,当多个构造方法有相似的代码时,可以通过`this()`来复用代码。

    ---

    #### **结论**:
    `this`关键字是Java面向对象编程中的一个重要概念,它帮助我们区分成员变量和局部变量,避免命名冲突,同时使代码更加简洁和易于维护。

     3.5.3 使用this关键字调用成员方法 

    ### 笔记: 3.5.3 使用`this`关键字调用构造方法

    ---

    #### **概述**:
    在Java中,我们不能直接像调用其他成员方法一样调用构造方法。但是,在一个构造方法中可以使用`this(参数1, 参数2, ...)`的形式来调用类中的其他构造方法。这种技巧主要用于代码重用和逻辑清晰。

    ---

    #### **示例**:

    在下面的`Student`类中,我们有两个构造方法:一个无参构造方法和一个有参构造方法。在有参构造方法中,我们使用`this()`调用了无参构造方法。

    1. class Student {
    2.     private String name;
    3.     private int age;
    4.     public Student() {
    5.         System.out.println("调用了无参构造方法");
    6.     }
    7.     public Student(String name, int age) {
    8.         this(); // 调用无参构造方法
    9.         this.name = name;
    10.         this.age = age;
    11.     }
    12.     public String read() {
    13.         return "我是:" + name + ", 年龄:" + age;
    14.     }
    15. }

    ---

    #### **注意事项**:

    1. **位置重要性**: 在构造方法中,使用`this`调用其他构造方法的语句必须位于第一行。这样可以确保构造过程的逻辑顺序不会被打破。
      
    2. **唯一性**: 你只能在构造方法中使用`this`调用其他构造方法一次。不可以多次调用。

    3. **防止循环调用**: 不能在两个构造方法中使用`this`进行互相调用,这会导致无限循环,进而导致`StackOverflowError`错误。

    错误示例:

    1. public Student() {
    2.     this("张三"); // 调用有参构造方法
    3.     System.out.println("有参构造方法被调用了。");
    4. }
    5. public Student(String name) {
    6.     this(); // 调用无参构造方法,形成循环调用
    7.     System.out.println("无参构造方法被调用了。");
    8. }

    ---

    #### **结论**:
    使用`this`关键字在构造方法中调用其他构造方法是一种常见的编程技巧,它可以使代码更加简洁,避免重复,并增加代码的可读性。但同时,程序员也需要注意上述的注意事项,以确保代码的正确性。

     

     

     

     

     

     

     总结:

    ### `this`关键字总结

    ---

    #### **重点**:

    1. **定义**: 在Java中,`this`是一个引用变量,它引用了当前对象。
       
    2. **使用场景**:
        - 调用本类的属性。
        - 调用本类的成员方法。
        - 调用本类的构造方法。

    3. **构造方法中的使用**: 在一个构造方法中,可以使用`this(参数1, 参数2, ...)`的形式来调用类中的其他构造方法。

    ---

    #### **难点**:

    1. **区分属性与参数**: 当类的属性与构造方法或方法的参数同名时,使用`this`关键字可以帮助我们区分它们。例如,`this.name = name;`

    2. **构造方法中的调用**: 理解在一个构造方法内如何和为什么要使用`this`来调用另一个构造方法。

    3. **方法链**: 在某些设计模式中,例如Builder模式,`this`经常用于返回当前对象,从而使方法调用可以被链接在一起。

    ---

    #### **易错点**:

    1. **位置错误**: 在构造方法中,使用`this`来调用其他构造方法时,这个调用必须是第一个语句。

    2. **循环调用**: 不能让两个构造方法通过`this`互相调用,这会导致无限循环并最终抛出`StackOverflowError`错误。

    3. **过度使用**: 在不需要明确指向当前对象的属性或方法时,避免使用`this`,因为它可能会使代码冗长和混乱。

    4. **与局部变量混淆**: 当成员变量与局部变量(例如方法或构造函数的参数)同名时,如果忘记使用`this`,则默认引用的是局部变量,这可能导致意外的错误。

    ---

    #### **结论**:

    `this`关键字在Java中是一个强大的工具,它提供了明确引用当前对象的属性和方法的方法。然而,不正确的使用可能会导致错误或混淆,因此必须小心使用。

     

  • 相关阅读:
    18. 四数之和
    【尚硅谷】JavaWeb
    学习STM32(2)--STM32单片机GPIO应用
    Redis(三)
    RK3588开发笔记(一):基于方案商提供的宿主机交叉编译Qt5.12.10
    什么是虚拟DOM(Virtual DOM)?它在前端框架中的作用是什么?
    CFdiv2-Chip Move-(线性dp+状态枚举方式)
    Meta Llama 3本地部署
    MVC模式简介
    浅谈AVL树,红黑树,B树,B+树原理及应用
  • 原文地址:https://blog.csdn.net/tang7mj/article/details/133821935