我有一个疑问,困惑我好久了,望高手进来帮我解决一下!!

wulingdongliu 2002-12-28 09:05:27
假定有这样一段程序
1 class A {
2 int a;
3 methoda(){...... }


4 public class B extends A{
5 public static void main(String[] args){
6 B x=new B();
7 }
8 }

很显然,B的构造器调用了父类A的默认构造器
我的疑问便是-------第六行的语句是创建了一个类A的实体,还是创建了一个有a这个变量的B类实体????

若在第七行加上x.methoda();这个语句的话,究竟是类A的实体调用自己的方法还是类B的实体调用类A的方法????


请尽快回答我!!!!!

...全文
25 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guohuidan10000 2003-01-13
  • 打赏
  • 举报
回复
无聊!
wulingdongliu 2002-12-30
  • 打赏
  • 举报
回复
十分感谢大家的帮助!!!!
ervinlj 2002-12-30
  • 打赏
  • 举报
回复
该结帖了把!
jzld0627 2002-12-29
  • 打赏
  • 举报
回复
up
mengz 2002-12-28
  • 打赏
  • 举报
回复
当然是创建了一个有a这个变量的B类实体,

如第七行调用x.methoda(); 应该也是类B自己的方法.

如下方法可以证明,试编译:

--------------代码开始--------------
class A {
int a;
public void methoda() {

System.out.println(this.toString());

}}


public class B extends A{
public static void main(String[] args){
B x=new B();
x.methoda();
}
}
-----------代码结束-----------------

运行结果应为:
C:\>java B
B@26b249

在methoda()中加入 println(this.toString())后,经变量x调用此方法,显示this是B.

ervinlj 2002-12-28
  • 打赏
  • 举报
回复
第六行语句是实例化了一个类b类型的对象,这样以类b的构件器实例化类b的对象的时候,在这个构件器的第一个语句调用了超类的构件器。
这是一个继承的关系,你实例化了一个类b类型的对象,而类b继承了类a的所有实例变量和方法,当然是类b的对象调用了类a的方法拉!

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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