日期:2014-05-20  浏览次数:20865 次

谁来证明"大花猫"是错误的?
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);
}
}


------解决方案--------------------
lz老大~~~你还在整这个问题呢~~~~~

你下面的转化是错的~!
System.out.println(((bb) t).num);
不能拿父类转化为子类~~~

你的基础知识还是不行呀~

------解决方案--------------------
aa t=new aa();
System.out.println(((bb) t).num);

这里出错了,因为t不是bb对象,所以这里会出现ClassCastException
------解决方案--------------------
楼上说的没错,没有你父亲哪来的儿子,怎么能让父类来转化成子类呢?只有先出生的才能把后出生的转化为自己
------解决方案--------------------
aa和bb的关系就类似“马”和“白马”,白马可以当马用,马却不能当白马用
------解决方案--------------------
aa和bb的关系就类似“马”和“白马”,白马可以当马用,马却不能当白马用


是马不一定能当白马用(不能否定,只是不确定)


------解决方案--------------------
本来我也想说点什么的 ,但是还是你先打好基础为重!
------解决方案--------------------
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);
}
}

看看这段代码,符合你的要求不?
------解决方案--------------------
基础不扎实 还钻牛角尖