Java学习之this关键字的使用

要是觉得内容枯燥,您可以点击左下角的播放按钮,让您在音乐的熏陶下愉快的阅读

本文总字数:1660

•区分成员变量和局部变量

复制代码
public class Person {

    String name;
    int age;
    
    public void set(String name,int age) {
        this.name = name;
        this.age = age;
    }
    
}
复制代码

  形参与成员名字重名,用 this 来区分;

•构造器与构造器之间的调用

  可以使用 this 关键字调用重载构造方法,避免相同的初始化代码;

  只能在构造方法中用,并且必须位于构造方法的第一句;

  除了构造器之外,编译器禁止在其他任何方法中调用构造器。

复制代码
public class Person {

    String name;
    int age;
    
    Person(){
        System.out.println("无参构造函数");
    }
    
    Person(String name){
        this();
        this.name = name;
        System.out.println("含一个参数的构造函数");
    }
    
    Person(String name,int age){
        this(name);
        this.age = age;
        System.out.println("含两个参数的构造函数");
    }
    
    public static void main(String[] args) {
        
        Person person = new Person("MElephant",18);
        
    }
}
复制代码

运行效果

•在继承中使用 this

  新建一个 Person 类作为父类,Boy 类作为子类;

code

复制代码
public class Person {

    int age;
    
    public void f() {
        
        System.out.println("age = "+this.age);
        System.out.println(this.toString());
        
    }
    
    public static void main(String[] args) {
        
        Boy boy = new Boy();
        boy.f();
    }
}
class Boy extends Person{
    
    public void f() {
        
        age = 18;
        super.f();
        
    }
}
复制代码

  在该代码中,Person 类包含一个成员变量 age 和一个 f() 方法,并在该方法中添加了两行打印语句;

  其子类 Boy 重写了  f() 方法,设置了  age = 18 ,同时通过  super.f(); 调用了其父类的  f() 方法;

  接下来新建一个 Test 类来测试输出结果;

Test.java

public class Test {

    public static void main(String[] args) {
        
        Boy boy = new Boy();
        boy.f();
    }
}

运行结果

  可以看到,通过  super.f() 打印的两条语句中的 this 指向的是 Boy 类;

•声明

参考资料

  【Java之路:this关键字的用法

posted @   MElephant  阅读(238)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示