一个简单的问题!

dongcenphoenix 2005-04-11 10:16:13
public class A
{
public A()
{
}

private void display1()
{
System.out.println("1A");
}

private void display2()
{
System.out.println("2A");
}

public void displayAll()
{
display1();
display2();
}
}


public class B extends A
{
public B()
{
super();
}

public void display1()
{
System.out.println("1B");
}

public void display2()
{
System.out.println("2B");
}


public static void main(String[] args)
{
A a=new B();
a.displayAll();
}
}

显示的是什么??为什么?
谢谢

...全文
199 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dj0517 2005-04-11
  • 打赏
  • 举报
回复
1A
2A
Latnok Han 2005-04-11
  • 打赏
  • 举报
回复
这问题也要上CSDN上来问啊?!
你先自己在自己的机器上执行一下就好了,如果你不理解extends是怎么回事的话,相信你执行了这个程序以后就错不多了。
CHNM老树皮 2005-04-11
  • 打赏
  • 举报
回复
刚好我对upcasting也不怎么清楚,多谢楼主的问题 呵呵。

有点头绪,希望高人能给再顺着这个问题给延伸下去阿
wm_885 2005-04-11
  • 打赏
  • 举报
回复
A前面多了个 public
1A
2A
hongyan2004 2005-04-11
  • 打赏
  • 举报
回复
1A
2A
garry2000 2005-04-11
  • 打赏
  • 举报
回复
我看一下,继承多态吧,
不是很难的,想学好了也不是很简单的
lasthope 2005-04-11
  • 打赏
  • 举报
回复
哎,这么简单的程序,运行一下不就得了!
Mark大先生 2005-04-11
  • 打赏
  • 举报
回复
楼上的几位说的真对!!!
itsea 2005-04-11
  • 打赏
  • 举报
回复
因为B里没有displayAll的方法把所以就去了A里调用?对吗?
MARS.nEIL 2005-04-11
  • 打赏
  • 举报
回复
私有方法是不会被继承的..
只是不明白,为什么displayAll调用的是A里边的方法....
silverend 2005-04-11
  • 打赏
  • 举报
回复
楼主给出代码的运行结果为1A ,2A是没错的。

但如果把类class A 中的两方法display1()和display2()的权限private改为public的话,结果则都会变为:1B,2B,不信的话可试试

内部会有Override的操作
nickyliuk 2005-04-11
  • 打赏
  • 举报
回复
楼上说得对
chg2008 2005-04-11
  • 打赏
  • 举报
回复
1A
2A
silverend 2005-04-11
  • 打赏
  • 举报
回复
好好理解多态的内涵,涉及向上转型upcasting

如果把类class A 中的两方法display1()和display2()的权限private改为public的话,结果则都会变为:1B,2B
escalj 2005-04-11
  • 打赏
  • 举报
回复
首先告诉你,你这个程序有误:应该把class A前面的public去掉。
再有:运行结果正如楼上说的。
感觉你不明白的是这句话:A a=new B();
运行结果其实已经告诉你:你声明时候实际上发生了upcasting,所以调用的都是A里的方法,这一点tij里说的很清楚了。

62,616

社区成员

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

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