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);
}
}
这样改下
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);
}
}
解决方案 »
- javamail如何下载外网的附件(如163、yahoo、126之类)??
- 请教如何实现托盘下用screen键抓图的功能,多谢了!
- 有人用netBeans5.0吗?问个问题,急得不得了
- 用installanywhere打包java生成的exe的问题
- 初学,菜鸟问题,各位高手帮忙!
- 关于多维数组
- 我想让JFileChooser的savedialogue在按了approve后仍能保持一会,怎么办?
- 如何改变RESULTSET的属性,使它既可以向前又可以向后查找记录。
- war 文件中的META-INF目录有什么用处?
- 请问有谁知道PrinterResolution怎么和打印机对象连在一起呀,
- java中字符串的颠倒怎么写?
- 请教一个统计调用对象次数的小程序
System.out.println(((bb) t).num);
不能拿父类转化为子类~~~你的基础知识还是不行呀~
System.out.println(((bb) t).num);这里出错了,因为t不是bb对象,所以这里会出现ClassCastException
一般推荐class继承 abstrtact class,不推荐class继承class,java摒弃C++中的对继承的原因之一就是要避免继承泛滥~~
是啊,兄弟你见效了,我们学校Java老师很垃圾,
所以我一生气就不上课去了,我在家自己学习的,感觉在学校简直上浪费时间.
顺便问一下,你是哪个学校的,如果不方便在上面回答有时间交个朋友吧.以后要是遇到了问题,还请你多多指教呢.
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,我毕业多年了,现在是工作~
{
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);
}
}看看这段代码,符合你的要求不?