下面是菜鸟教程的例子
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这个方法