黑马程序员技术交流社区

标题: 一到关于多态的题 B b = new B();A a = b; 最后a为什么等于10? [打印本页]

作者: java_zbj    时间: 2016-1-26 23:00
标题: 一到关于多态的题 B b = new B();A a = b; 最后a为什么等于10?
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?


作者: 划江北上    时间: 2016-1-26 23:19
A a=new b这样子看你就明白了哦。
作者: fury1994    时间: 2016-1-27 10:02
~~~~~~~~~~~~~~~~~~~~
作者: Mayer    时间: 2016-1-27 10:19
二楼说的对:多态中,父类调用对象指向子类,该对象的变量和静态变量的编译和运行都沿用父类的。
作者: z4951061    时间: 2016-1-27 12:40
继承貌似只有方法是用的子类
作者: 刺客015    时间: 2016-1-27 22:22
成员变量  编译和运行都看左边
A a=new b
作者: 悠悠天下    时间: 2016-1-27 22:31
成员变量看左边就行了
作者: only-hou    时间: 2016-1-27 23:00
刺客015 发表于 2016-1-27 22:22
成员变量  编译和运行都看左边
A a=new b

对头     书上是这么说的
作者: 西贝    时间: 2016-1-27 23:13
这个是多态,A a = new B(); 编译和运行都看左边。具体执行过程,自己画一个内存图,就明白了
作者: D.TF    时间: 2016-1-28 11:24
楼上说的都对.我不说了,看L




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2