A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class A {
public int i = 10;
   }
   class B extends A{
                   public int i = 20;
   }
public class Test{
           public static void main(String args[]){
              B b = new B();
               A a = b;      
        System.out.println(b.i);
        System.out.println(a.i);
    }
}
各位大神,主要想问一下为什么a等于10?

9 个回复

倒序浏览
A a=new b这样子看你就明白了哦。

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报 0 1
~~~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
二楼说的对:多态中,父类调用对象指向子类,该对象的变量和静态变量的编译和运行都沿用父类的。
回复 使用道具 举报
继承貌似只有方法是用的子类
回复 使用道具 举报
成员变量  编译和运行都看左边
A a=new b
回复 使用道具 举报 1 0
成员变量看左边就行了
回复 使用道具 举报
刺客015 发表于 2016-1-27 22:22
成员变量  编译和运行都看左边
A a=new b

对头     书上是这么说的
回复 使用道具 举报
西贝 中级黑马 2016-1-27 23:13:27
9#
这个是多态,A a = new B(); 编译和运行都看左边。具体执行过程,自己画一个内存图,就明白了
回复 使用道具 举报
D.TF 中级黑马 2016-1-28 11:24:09
10#
楼上说的都对.我不说了,看L
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马