关于java中引用的问题

现在有两个类 A类和B类
B类继承了A类
A中有一个methodA()方法
B中有一个methodB()方法
执行如下语句

      1.A a=new A()   
      2.B b=new B()
      3.a=b
      

我想请问的是 第3行代码 是将对象b栈中的引用地址 赋值给 a
我在DEBUG中 一开始a对象的地址是A@462 b对象的地址是B@464
执行完 第三句以后 a的地址是B@464
那为什么 a还是指向A的对象 还能a.methodA()??
如果说 我的这个思路走 a已经是指向B类的对象
因为继承关系 能a.methodA()
那为什么不能 a.methoddB()呢

阅读 2.3k
2 个回答

a已经指向B对象了,但是因为B继承自A, 所以B也有methodA.

a.method()是a对象自身带的一个方法。

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题