有关java中this关键字的问题

 class Person{
    public void eat(Apple apple){
        Apple peeled=apple.getPeeled();
        System.out.println("Yummy");
    }
}
class Peeler{
    static Apple peel(Apple apple){
        return apple;
    }
}
class Apple{
    Apple getPeeled(){return Peeler.peel(this);}
}
public class Test{
    public static void main(String args[]){
        new Person().eat(new Apple());
    }
}

没怎么看懂,有大牛可以帮我详细详细详细解释一下吗?不胜感激!

 class Person {
    public void eat(Apple apple) {
        //2 调用这个内存地址中的方法
        Apple peeled = apple.getPeeled();
        //6 输出Yummy
        System.out.println("Yummy");
    }
}

class Peeler {
    //4 接收参数并返回
    static Apple peel(Apple apple) {
        return apple;
    }
}

class Apple {
    Apple getPeeled() {
        //3 调用Peeler类中的静态方法,并传递一个参数this,这个this表达就是第二部中的apple对象
        Apple peel = Peeler.peel(this);
        //5 返回
        return peel;
    }
}

public class Test {
    //我觉得这道题考的就是,jvm中的内存结构的知识
    //不妨拆开来,慢慢分析
    public static void main(String args[]) {
        //person存在[栈]中,person实际上就是一个内存地址,Java中称之为引用;new Person()存在[堆]中,这里存储的是person真正的数据,而不是像栈中的person
        //总结:栈中存的是对象的地址,堆中存对象
        Person person = new Person();
        //同理
        //apple是一个内存地址,new Apple()是数据对象真正存的地方
        Apple apple = new Apple();
        //1  把apple的内存地址放到方法中
        person.eat(apple);

    }
}

当创建一个对象后,Java虚拟机就会为其分配一个指向对象本身的指针,这个指针就是“this”。this就是代表该类的对象,这里的this就是指的一个new Apple()对象

class Apple{
Apple getPeeled(){return Peeler.peel(this);}
}

this就是当前Apple对象,通过peel参数传递

Apple getPeeled(){
return Peeler.peel(this);
}

这个你可以理解为,

Apple getPeeled(){
return Peeler.peel( new Apple() );
}

this,指的是当前对象
super,指的是父类对象,

问什么要有着个类,我个人理解哦,(说的不好别打脸)
由于 类只有实例化了 才能使用,才会分配内存,什么意思,,就是类的一切动作,都必须建立在对象的基础上,(静态的除外)

peel(Apple apple)这个函数,,需要传入一个 apple,,记住这是要传入对象, this 在这里仅仅是 new Apple()的一个缩写,

哎,表述还算清楚,有问题,还可以追问