Java学习之this关键字的使用

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

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 @ 2021-04-01 13:50  MElephant  阅读(234)  评论(0编辑  收藏  举报