这个不是this关键字的用法,属于向上转型问题
你可以执行下这个 看到结果就应该能理解是什么原因了。
public class A {
public int i=10;
void print(){
System.out.println("我是A中的函数");
}
}
class B extends A{
public int i=20;
void print(){
System.out.println("我是B中的函数,我重写了A中的同名函数");
}
void speek(){
System.out.println("向上转型时我会丢失");
}
public static void main(String[] args) {
B b=new B();
A a=b;//此处向上转型
b.print(); System.out.println(b.i);
b.speek();
a.print(); System.out.println(a.i);
((B) a).speek();//a在创建时虽然丢失了speek方法但是向下转型又找回了
}
}
这里面应该涉及到堆栈了,方法会被覆盖,属性不会,目前jvm我还不了解
@困难户: 想了解jvm内存模型可以看这个
https://blog.csdn.net/wang852575989/article/details/90906134