首页 新闻 搜索 专区 学院

this关键字用法

0
[已解决问题] 解决于 2020-04-16 18:09



困难户的主页 困难户 | 菜鸟二级 | 园豆:209
提问于:2020-04-16 12:26
< >
分享
最佳答案
0

这个不是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方法但是向下转型又找回了

}

}

奖励园豆:5
L_老帅 | 菜鸟二级 |园豆:209 | 2020-04-16 15:56

这里面应该涉及到堆栈了,方法会被覆盖,属性不会,目前jvm我还不了解

困难户 | 园豆:209 (菜鸟二级) | 2020-04-16 16:15

@困难户: 想了解jvm内存模型可以看这个
https://blog.csdn.net/wang852575989/article/details/90906134

L_老帅 | 园豆:209 (菜鸟二级) | 2020-04-17 18:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册