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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 遗忘的青春年华 中级黑马   /  2014-3-4 23:15  /  1335 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);               
    }
}

结果为什么是20和10啊,20我知道,可是后面a.i不是被子类继承了么

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

倒序浏览
在多态中成员变量的值参考左边,也就是看引用型变量所属的类。建议你在写类名和方法的时候最好写这个类的英文或者拼音,这样阅读性更强。
  1. class Father{
  2.         int age=40;
  3. }

  4. class Son extends Father{
  5.         int age=20;
  6. }
  7. public class Test{
  8.         public static void main(String args[]){
  9.                 Father father=new Son();                //左边是父类的引用,则打印的成员变量值为父类的。
  10.                 System.out.println(father.age);
  11.                
  12.                 Son son=new Son();                //左边是子类的引用,则打印的成员变量值是子类的
  13.                 System.out.println(son.age);
  14.         }
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
用一句话来回答你,多态只存在于方法上  和成员变量无关 通俗吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马