this

1-

this表示本类,调用此方法所指的对象

public class person {
    int age = -1;
    String name = "unknow";

    public person() {
    }

    public person(String _name, int _age) // 构造方法2
    {
        name = _name;
        age = _age;
    }

    public person(String _name) // 构造方法1
    {
        name = _name;
    }

    public void fun1() {
        System.out.println(name);
    }

    public void fun2() {
        person a2 = new person("a2");
        a2.fun1();
        this.fun1();
    }

    public static void main(String[] args) {
        person a1 = new person("a1");
        a1.fun2();
    }
}

可看出this指向的是a1

通过a1.fun2()调用方法fun2,fun2方法里面创建了新对象a2

a2.fun1调用fun1打印出自己a2的name

this.fun1也是打印出this的name

而这个this并不是离this最近的a2,而是a1,this.fun1这个语句整体所在的方法fun2,调用fun2的是a1,则this是a1


2-

当参数名与属性名一样时也是this的用武之地

要么改变参数名

还有就是

this.name = name


3-

当构造方法参数不同时

  //带一个参数的构造方法
    public Hero(String name){
        System.out.println("一个参数的构造方法");
        this.name = name;
    }
      
    //带两个参数的构造方法
    public Hero(String name,float hp){
        this(name);
        System.out.println("两个参数的构造方法");
        this.hp = hp;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值