[求助]关于上转型对象的问题。

szwx855 2007-09-26 11:02:20
代码如下:
package File;

class 类人猿{
char m='T';
void crySpeck(String s){
System.out.println(s);

}

}
class People extends 类人猿{
char m='A';
double n=60;
void computer(int a,int b){
int c=a+b;
System.out.println(a+"加"+b+"等于"+c);

}
void crySpeck(String s){
System.out.println(m+"**"+s+"**"+m);
}
}
public class File_5_101 {
public static void main(String args[]) {
People wang=new People();
类人猿 monkey=wang;
monkey.crySpeck("I Love This Game!!");
System.out.println(monkey.m);/*这里为什么不是A呢?是只能操作隐藏成员变量吗?*/
People zhang=(People) monkey;
zhang.computer(55, 33);
zhang.m='W';
System.out.println(zhang.m);


}
我有些疑问。
上转型对象操作重复的成员变量时,是在父类中操作,上转型对象操作的如果是隐藏方法,那就必须在子类中操作,是吗?
...全文
102 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nj_wyj 2007-09-26
  • 打赏
  • 举报
回复
我用JB9.0运行了一下,得到下面的结果

A**I Love This Game!!**A

T

55加33等于88

W
szwx855 2007-09-26
  • 打赏
  • 举报
回复
我顶下~。。。
szwx855 2007-09-26
  • 打赏
  • 举报
回复
你声明monkey的类型是 类人猿 ,编译器限定了你只能访问它的属性和方法




那monkey.crySpeck怎么就调用了People中的cryspeck呢 ?结果 是A**i love the game **A
for_cyan 2007-09-26
  • 打赏
  • 举报
回复
People wang=new People();
类人猿 monkey=wang;
monkey.crySpeck("I Love This Game!!");
System.out.println(monkey.m);/*这里为什么不是A呢?是只能操作隐藏成员变量吗?*/

你声明monkey的类型是 类人猿 ,编译器限定了你只能访问它的属性和方法
szwx855 2007-09-26
  • 打赏
  • 举报
回复
结分了~懂了~谢谢大家~~
nj_wyj 2007-09-26
  • 打赏
  • 举报
回复
接6楼
System.out.println(super.m+"**"+s+"**"+m);
将输出 T**I Love This Game!!**A

另一方面,monkey是被声明为类人猿父类了,所的它的成员变量表中,只有类人猿类的变量m,
因而,monkey.m=“T”,如果想输出子类People中m,可以用((People)monkey).m来输出。相反,如
果输出monkey.n,想输出其子类另一成员n的话,将会报错,因为系统在编译monkey.n这句话的
时候,在类人猿类定义中找不到n这个变量,除非你用((People)monkey).n会得到60
nj_wyj 2007-09-26
  • 打赏
  • 举报
回复
People wang=new People();
类人猿 monkey=wang;

第一句wang定义为People子类,并创建了实例
第二句monkey是类人猿父类,并将实例wang赋给了monkey

一方面,monkey虽然是被声明为类人猿父类,但它指向的内容却是子类People,
这一点可以调用System.out.println(monkey.getClass().toString() );输出是People;
因而,调用mokey.crySpeck("I Love This Game!!");时父类中的crySpeck方法被隐藏,
执行People中的crySpeck,而执行People.crySpeck时所用的m变量当然时子类People中的m变量"A"
如果把People.crySpeck方法改为




62,623

社区成员

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

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