谁来证明"大花猫"是错误的?

renqiang_888 2007-04-12 04:58:33
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);
}
}
...全文
353 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
insiku 2007-04-13
  • 打赏
  • 举报
回复
基础不扎实 还钻牛角尖
sunyan44986487 2007-04-13
  • 打赏
  • 举报
回复
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);
}
}

看看这段代码,符合你的要求不?
家有萌宝V 2007-04-12
  • 打赏
  • 举报
回复
本来我也想说点什么的 ,但是还是你先打好基础为重!
renqiang_888 2007-04-12
  • 打赏
  • 举报
回复
楼上朋友你好:
大花猫这样输入是正确的啊,我了输出了1和8(同时我也谢谢你,我也明白了继承的概念)
我认为大花猫用的是"子---->父"的关系啊"
你怎么说他用“父承子业”~~
不好意思,不是我钻牛角尖,这是最后一个问题了,搞定之后我也该休息了,早晨到现在已经10几个钟头没有休息了./
daniel_kaka 2007-04-12
  • 打赏
  • 举报
回复
还有呀,
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,我毕业多年了,现在是工作~
kevinliuu 2007-04-12
  • 打赏
  • 举报
回复
aa和bb的关系就类似“马”和“白马”,白马可以当马用,马却不能当白马用



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

renqiang_888 2007-04-12
  • 打赏
  • 举报
回复
daniel_kaka()
是啊,兄弟你见效了,我们学校Java老师很垃圾,
所以我一生气就不上课去了,我在家自己学习的,感觉在学校简直上浪费时间.
顺便问一下,你是哪个学校的,如果不方便在上面回答有时间交个朋友吧.
我的邮箱是:renqiang_888@126.com
以后要是遇到了问题,还请你多多指教呢.
cxz7531 2007-04-12
  • 打赏
  • 举报
回复
aa和bb的关系就类似“马”和“白马”,白马可以当马用,马却不能当白马用
rypgood 2007-04-12
  • 打赏
  • 举报
回复
楼上说的没错,没有你父亲哪来的儿子,怎么能让父类来转化成子类呢?只有先出生的才能把后出生的转化为自己
daniel_kaka 2007-04-12
  • 打赏
  • 举报
回复
你这是典型的滥继承 ~~,
一般推荐class继承 abstrtact class,不推荐class继承class,java摒弃C++中的对继承的原因之一就是要避免继承泛滥~~
ChDw 2007-04-12
  • 打赏
  • 举报
回复
aa t=new aa();
System.out.println(((bb) t).num);

这里出错了,因为t不是bb对象,所以这里会出现ClassCastException
daniel_kaka 2007-04-12
  • 打赏
  • 举报
回复
lz老大~~~你还在整这个问题呢~~~~~

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

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

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧