Java父子对象之间是怎样强制转换的?
答案:3 悬赏:0 手机版
解决时间 2021-02-28 19:45
- 提问者网友:玫瑰园
- 2021-02-28 10:41
Java父子对象之间是怎样强制转换的?
最佳答案
- 五星知识达人网友:独行浪子会拥风
- 2021-02-28 12:10
先别看父子,因为现实中总是任务父亲比儿子厉害。
而在类中, 儿子有可能比父亲厉害(比如S比F多了一个sonMethod方法),儿子能做的事情,父亲有可能不能做。
new S()的时候, 在内存中创建了一段代码。 这段代码有S的全部功能。
因为S从F继承,就是说 F的功能,S都有。 所以 F f = new S(),可以成立。
现在 在内存有一个变量,叫 f,他保存new S()的时候的内存中创建的那段代码的地址。
他有 F的全部功能(y因为他声明的类是 F)。
然后 进行 S s = (F)f; 我们知道, S的功能,F有可能有。 所以编译器允许你这样操作。
然后,就把 f 里保存地址,放到s里。 这样,s其实指向的就是new S()的时候在内存中创建的那段代码。
1,编译器检查通过
2, 没有变化,只是在内存中加了一个变量s,里面保存的和 f 同样的地址。 此时 f 是 f,是F类;
s 是 s ,是S类。 他们不搭杠。
3,里面保存的值 是一样的, 但是是2个对象。就是2个不同的口袋,装了相同的东西。
4., 因为f 是F, 要调用S的方法, F不一定有。 你可以理解为 F是个小口袋,S是套在F外面的大口袋。 S里的东西,F不一定有; F里的东西,一定也在S里。、
注意大小写。
而在类中, 儿子有可能比父亲厉害(比如S比F多了一个sonMethod方法),儿子能做的事情,父亲有可能不能做。
new S()的时候, 在内存中创建了一段代码。 这段代码有S的全部功能。
因为S从F继承,就是说 F的功能,S都有。 所以 F f = new S(),可以成立。
现在 在内存有一个变量,叫 f,他保存new S()的时候的内存中创建的那段代码的地址。
他有 F的全部功能(y因为他声明的类是 F)。
然后 进行 S s = (F)f; 我们知道, S的功能,F有可能有。 所以编译器允许你这样操作。
然后,就把 f 里保存地址,放到s里。 这样,s其实指向的就是new S()的时候在内存中创建的那段代码。
1,编译器检查通过
2, 没有变化,只是在内存中加了一个变量s,里面保存的和 f 同样的地址。 此时 f 是 f,是F类;
s 是 s ,是S类。 他们不搭杠。
3,里面保存的值 是一样的, 但是是2个对象。就是2个不同的口袋,装了相同的东西。
4., 因为f 是F, 要调用S的方法, F不一定有。 你可以理解为 F是个小口袋,S是套在F外面的大口袋。 S里的东西,F不一定有; F里的东西,一定也在S里。、
注意大小写。
全部回答
- 1楼网友:英雄的欲望
- 2021-02-28 14:31
布吉岛。
- 2楼网友:醉吻情书
- 2021-02-28 13:07
子类的对象可以成为父类的对象,不需要转换,这叫上转型对象。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯