cxz7531(大花猫) ( ) 信誉:97    Blog   加为好友  2007-04-12 16:14:54  得分: 0  
这样改下
public class aa {
  public int num = 1;  public static void main(String... strings) {
    bb p = new bb();
    System.out.println("num=" + ((aa) p).num);
    System.out.println("num=" + p.num);
  }
}class bb extends aa {
  public int num = 8;  public static void main(String args[]) {
    bb t = new bb();
    System.out.println(t.num);
  }
}
//结果是
num=1
num=8
////////////////////////////
这说明父类、子类的字段不是放在一个空间中,子类不会覆盖父类,子类的实例以子类的面孔出现的时候调用的是子类的该字段,以父类的面孔出现的时候调用的是父类的该字段。两者井水不犯河水。这跟方法有区别,方法从来都是子类覆盖父类。不管子类的实例以什么面孔出现调用的都是子类的方法
但是我模仿大花猫的用法却不成功为什么呢:程序如下:public class aa
{
public int num=1;
}class bb extends aa
{
public int num=8;
public static void main(String args[])
{
aa t=new aa();
System.out.println(t.num);
System.out.println(((bb) t).num);
}
}

解决方案 »

  1.   

    lz老大~~~你还在整这个问题呢~~~~~你下面的转化是错的~!
    System.out.println(((bb) t).num);
    不能拿父类转化为子类~~~你的基础知识还是不行呀~
      

  2.   

    aa t=new aa();
    System.out.println(((bb) t).num);这里出错了,因为t不是bb对象,所以这里会出现ClassCastException
      

  3.   

    你这是典型的滥继承 ~~,
    一般推荐class继承 abstrtact class,不推荐class继承class,java摒弃C++中的对继承的原因之一就是要避免继承泛滥~~
      

  4.   

    aa和bb的关系就类似“马”和“白马”,白马可以当马用,马却不能当白马用
      

  5.   

    daniel_kaka() 
    是啊,兄弟你见效了,我们学校Java老师很垃圾,
    所以我一生气就不上课去了,我在家自己学习的,感觉在学校简直上浪费时间.
    顺便问一下,你是哪个学校的,如果不方便在上面回答有时间交个朋友吧.以后要是遇到了问题,还请你多多指教呢.
      

  6.   

    aa和bb的关系就类似“马”和“白马”,白马可以当马用,马却不能当白马用是马不一定能当白马用(不能否定,只是不确定)
      

  7.   

    还有呀,
    cxz7531(大花猫) ( ) 信誉:97    Blog   加为好友  2007-04-12 16:14:54  得分: 0  
    这样改下
    public static void main(String... strings) {
        bb p = new bb();
        System.out.println("num=" + ((aa) p).num);
        System.out.println("num=" + p.num);
      }
    他这里写的也是错的,因为他也用了“父承子业”~~回lz,我毕业多年了,现在是工作~
      

  8.   

    public class aa
    {
    public int num=1;
    }class bb extends aa
    {
    public int num=8;
    public static void main(String args[])
    {
    bb b = new bb();
    aa t=(aa)new bb();
    System.out.println(b.num);
    System.out.println(t.num);
    }
    }看看这段代码,符合你的要求不?