你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Java专栏
Java SE—面向对象 this关键字的作用
 

this关键字有三个用途:
a.this调用本类属性
b.this调用本类方法
c.this表示当前对象

this调用本类属性

class Person{
    private String name;
    private int age;
    public Person(String name,int age){
        name = name ;
        age = age ;
    }
    public String getPersonInfo(){
        return "姓名:" + name + ",年龄:"+age;
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person("张三",20);
        System.out.println(per.getPersonInfo());
    }
}
以上代码通过构造方法对属性进行赋值,但是你会发现当参数与属性名相同时,并不能正确赋值,此时我们需要加上this关键字给对象属性赋值

this.name = name;
this.age = age;//只要是在类中方法访问类中属性一定要加上this关键字
this调用本类方法
this调用本类方法分两种情况:
1、调用普通方法:this.方法名称(参数)

class Person{
    private String name;
    private int age;
    public Person(String name,int age){
        this.name = name ;
        this.age = age ;
        this.Print();//调用普通方法
    }
    public void Print(){
        System.out.println("这是一个普通方法");
    }
    public String getPersonInfo(){
        return "姓名:" + name + ",年龄:"+age;
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person("张三",20);
        System.out.println(per.getPersonInfo());
    }
}
2、调用构造方法:this(参数)
调用构造方法 this(参数)

class Person{
    private String name;
    private int age;
 
    public Person(){
        System.out.println("产生新的Person对象");
    }
    public Person(String name){
        System.out.println("产生新的Person对象");
        this.name = name ;
    }
    public Person(String name, int age){
        System.out.println("产生新的Person对象");
        this.name = name;
        this.age = age;
    }
    public String getPersonInfo(){
        return "姓名:" + name + ",年龄:"+age;
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Person();
        Person per1 = new Person("张三");
        Person per2 = new Person("张三",23);
        System.out.println(per.getPersonInfo());
        System.out.println(per1.getPersonInfo());
        System.out.println(per2.getPersonInfo());
    }
}
对以上代码进行修改

public Person(){
        System.out.println("产生新的Person对象");
    }
    public Person(String name){
        this();
        this.name = name ;
    }
    public Person(String name, int age){
        this(name);
        this.name = name;
        this.age = age;
    }


this调用构造方法时必须注意:
    a.this调用构造方法的语句必须放在构造方法的首行
    b.使用this调用构造方法时,必须留有出口(不能成环)

this表示当前对象

class Person{
    public void Print(){
        System.out.println("普通方法"+this);
    }
}
public class Test{
    public static void main(String[] args) {
        Person per1 = new Person();
        System.out.println("主方法"+per1);
        per1.Print();
 
        Person per2 = new Person();
        System.out.println("主方法"+per2);
        per2.Print();
    }
}


只要对象调用了本类中的方法,this就表示当前执行的对象
---------------------
作者:vm04580
来源:CSDN
原文:https://blog.csdn.net/ly52014/article/details/84497646
版权声明:本文为博主原创文章,转载请附上博文链接!

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089