一个初学问题,但好像不好解答

gatesxie 2003-08-26 01:57:41
class zhu
{
public static void main(String[] args)
{
class2 myclass=new class2();
myclass.print();
}
}
class class1
{
int x=1;
void print()
{
System.out.println(x+" "+this.getClass().getName());
}

}
class class2 extends class1

{
int x=4;

}

输出的结果为何是1 class2?
...全文
37 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
violetblue 2003-08-31
  • 打赏
  • 举报
回复
由于你在class2中沒有構造函數,所以執行class2 myclass=new class2();
的時候什么都不會做!當然沒有x=4之說

这句话不对。myclass.x是等于4的。
xhongyang 2003-08-26
  • 打赏
  • 举报
回复
up
lsy110 2003-08-26
  • 打赏
  • 举报
回复
public static void main(String[] args)
{
class2 myclass=new class2();
myclass.print();
}

oo問題,
由于你在class2中沒有構造函數,所以執行class2 myclass=new class2();
的時候什么都不會做!當然沒有x=4之說!那么myclass.print()的x就等于1咯!
flowercat 2003-08-26
  • 打赏
  • 举报
回复
很基本的oo问题!
breakhard 2003-08-26
  • 打赏
  • 举报
回复
同意yesemiman(未央) 的
我运行过的,很对!
5liao 2003-08-26
  • 打赏
  • 举报
回复
把class2 和class1放到不同的包也可以得到你想要的结果
ewingchen 2003-08-26
  • 打赏
  • 举报
回复
同意楼上
yesemiman 2003-08-26
  • 打赏
  • 举报
回复
如果你想要结果是 4, class2, 那么把你的class2安下面修改。 classes2 的 METHOD要override super class 的 method 才可以。如果只是直接调用class1的method, 那么在运行的print的时候x的赋值当然是1。

class class2 extends class1

{
int x=4;
void print()
{
System.out.println(x+" "+this.getClass().getName());
}

}

62,614

社区成员

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

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