minecraft最牛
学了没学懂,想请大佬举个例子让我理解理解。

X836696023
private void test1() {
    test2();
    this.test2(); // 只调用这个类
}

private void test2() {
}

番茄茄
本帖最后由 番茄茄 于 2020-3-26 20:08 编辑

这是一个C++的例子:

  1. #include <iostream>

  2. class MyClass
  3. {
  4. private:
  5.     int data;
  6. public:
  7.     MyClass()
  8.         : data(0)
  9.     {
  10.     }

  11.     MyClass& SetData(const int newData)
  12.     {
  13.         data = newData;
  14.         return*this;
  15.     }

  16.     const MyClass& Display()const
  17.     {
  18.         std::cout << data << std::endl;
  19.         return*this;
  20.     }
  21. };

  22. int main()
  23. {
  24.     MyClass object;
  25.     object.SetData(5).Display();
  26.     return 0;
  27. }
复制代码


这里我写了一个类,名字叫做MyClass;
MyClass有一个整数类型数据成员叫data;
MyClass有一个方法叫SetData,用于重新设置data的值,而且这个方法返回对象本身;
在main里的操作就是,创建了一个MyClass类的对象叫object,然后将object的值通过SetData方法设置为5,紧接着使用Display方法打印出来;
SetData函数在调用完后返回了对象本身,就可以很方便地继续调用其他方法了。

洞穴夜莺
你可以这么理解
class Human extends Entity{
boolean removed=false;
public void die(){
removed=true;
server.removeEntity(this);
}
}
那么当我执行a.die()时,这里的this就指代a,同理,当我执行b.die()的时候this就指b

XruiDD
this=ldarg.0将方法的第0个参数压入堆栈,而实例的this指针总是第0个参数。

飞翔之歌
说过简单一点:this代表自己这个类。
比如aaa b;这时,aaa里的this就等同于b。