黑马程序员技术交流社区

标题: java+android新手 [打印本页]

作者: 遗忘的青春年华    时间: 2014-3-4 23:15
标题: java+android新手
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不是被子类继承了么
作者: 赵卓辉    时间: 2014-3-4 23:53
在多态中成员变量的值参考左边,也就是看引用型变量所属的类。建议你在写类名和方法的时候最好写这个类的英文或者拼音,这样阅读性更强。
  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. }
复制代码

作者: 13556793092    时间: 2014-5-17 14:34
用一句话来回答你,多态只存在于方法上  和成员变量无关 通俗吧




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