谁来证明"大花猫"是错误的?
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);
}
}
看看这段代码,符合你的要求不?
------解决方案--------------------基础不扎实 还钻牛角尖