关于Java的this的理解

下面是菜鸟教程的例子

class Person {
    
    
    private int age = 10;
    public Person(){
    
    
    System.out.println("初始化年龄:"+age);
}
    public int GetAge(int age){
    
    
        this.age = age;
        return this.age;
    }
}
 
public class test1 {
    
    
    public static void main(String[] args) {
    
    
        Person Harry = new Person();
        System.out.println("Harry's age is "+Harry.GetAge(12));
    }
}

运行结果:

初始化年龄:10
Harry's age is 12

教程的解释是:this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
我的理解:在GetAge方法中,左边的this.age实际上是指向了Person 类的成员变量age,右边的age是形参,GetAge方法其实就是把传入的形参赋给了成员变量age
main方法中,通过构造方法创建了一个person对象,执行了构造方法里的 System.out.println("初始化年龄:"+age);又接着执行了 System.out.println("Harry's age is "+Harry.GetAge(12));,就是调用了GetAge方法并将age赋值为12

实际开发中做的是一个删除留言的功能:

public class BusLeaveMessageServiceImpl extends ServiceImpl<BusLeaveMessageMapper, BusLeaveMessage> implements BusLeaveMessageService {
    
    

    @Autowired
    private BusMemberService memberService;

    @Override
    public Boolean delMessage(Long id) {
    
    
        // 删除本身
        boolean self = this.removeById(id);
        // 删除自己下面的回复
        QueryWrapper<BusLeaveMessage> wrapper = new QueryWrapper<BusLeaveMessage>();
        wrapper.eq("pid", id);
        boolean children = this.remove(wrapper);
        return self && children;
    }
}

this实际指向的是BusLeaveMessageServiceImpl 类的对象,由于BusLeaveMessageServiceImpl 继承了ServiceImpl,而ServiceImpl是封装了mybatisPlus的CRUD的,所以这个类的对象this可以直接调用removeById这个方法

猜你喜欢

转载自blog.csdn.net/weixin_42260782/article/details/109243183