面向对象--this关键字

this关键字

代表所在类的对象引用

记住: 方法被哪个对象调用,this就代表那个对象

什么时候使用this呢?

  • 局部变量隐藏成员变量
  • 其他用法后面和super一起讲解 

程序示例

class Student3 {
    //定义成员变量
    private String name;
    private int age;

    //提供公共的getXxx()和setXxx()方法
    //回想一下,我们之前给变量进行命名的时候,有一个规则:见名知意
    //所以我们改一下
    //我们根据变量命名规则的见名之意的方式修改了形参的名字,但是呢
    //运行程序后发现,虽然我们也调用了方法,也进行了传参,但是,结果依旧没有成功赋值
    //这是为什么呢?
    //因为变量的调用遵循就近原则
    //我们理想上,是想让传进来的这个参数赋值给该对象的成员变量
    //实际上传进来的实参的值后面进行赋值的时候,还是赋值给方法上的变量,与成员变量没有关系
    //想的是,将传进来的name值赋值给当前对象的name值
    public void setName(String name) { //"姜水旺"
        //Student3.name这种写法,我们没有介绍过
        //如果有一个东西可以代表当前调用该方法的对象就好了
        //谁可以代替当前方法的对象呢?
        //java提供了一个关键字:this
//        Student3.name = name;
        //这样写,就代表将传进来的参数,赋值给当前调用该方法的对象的成员变量name
        this.name = name;
    }

    public String getName() {
        //其实这里隐藏了一个this关键字,代表的是返回当前调用该方法的对象的成员变量name
        return this.name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void show() {
        System.out.println("姓名:" + name + ",年龄:" + age);
    }

}


public class StudentDemo2 {
    public static void main(String[] args) {
        //创建学生对象并对成员变量进行赋值
        Student3 s1 = new Student3();
        //对s1对象的姓名进行赋值
        s1.setName("姜水旺");
        s1.setAge(18);
        //调用show()方法查看所有成员变量值
        s1.show();
    }
}

this关键字内存图

 

posted @ 2021-12-03 23:28  赤兔胭脂小吕布  阅读(24)  评论(0编辑  收藏  举报