为了账号安全,请及时绑定邮箱和手机立即绑定

java继承和多态,对象a = 对象b,调用的是哪个成员变量。

java继承和多态,对象a = 对象b,调用的是哪个成员变量。

交互式爱情 2019-02-20 14:58:32
public class Test { public static void main(String[] args) { A a = new A(); a.s = 11; B b = new B(); b.s = 22; a = b; System.out.println(a.s); System.out.println(b.s); System.out.println(a.getS()); System.out.println(b.getS()); } } class A { int s = 1 ; int getS() { return s; } } class B extends A { int s = 0; int getS() { return s; } } 输出的是 1 22 22 22为什么 第一个输出的是1而不是0或者22.按照输出1来看,他调用的是父类A的成员变量s。这个涉及到了多态,此时a已经指向了men-B,理应输出22,为何输出的是A的成员变量s=1。
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

调用的成员变量是由“变量的类型”决定。
A a; 变量为A类型就是调用的A类型的变量。
B b; 变量为B类型就是调用的B类型的变量。
多态是跟method相关,跟field没有关系。

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 374 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信