求教初始化基类的问题,

robertcdong 2008-12-12 05:32:45
class A
{
A()
{
System.out.print("A()");
}
}

class B extends A
{
B()
{
System.out.print("B()");
}
}

class C extends B
{
C()
{
System.out.print("C()");
}
}

class D extends C
{
D()
{
System.out.print("D()");
}
public static D makeD()
{
return new D();
}
public static void main(String[] args)
{
D d=new D();
D d2=makeD();
}
}

public class E extends D
{
String name;
E()
{
String name="EEE";
System.out.print("E() constructor");
}
public static void main(String[] args)
{
E e=new E();
D.main(args);
System.out.print(e.name);

}
}

求教,主类E的对象为什么不会被初始化?为什么主类的E的构造函数没被调用?谢谢各位
...全文
65 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤独剑客 2008-12-15
  • 打赏
  • 举报
回复
一个public 就够了
ar7043 2008-12-12
  • 打赏
  • 举报
回复
印象中main只能写在public class中。。
编译竟然没错~但貌似运行不了~
ssqtjffcu 2008-12-12
  • 打赏
  • 举报
回复

public class E extends D {
String name;

E() {
String name = "EEE"; //把这句改为name = "EEE"
System.out.print("E() constructor");
}

public static void main(String[] args) {
E e = new E();
D.main(args);
System.out.print(e.name);

}
}
possibleonline 2008-12-12
  • 打赏
  • 举报
回复
E怎么没执行打印结果是A()B()C()D()E() constructorA()B()C()D()A()B()C()D()null
你没有打印出E.name是因为你在E的构造方法中又重新定义了一个name如果去掉其前面的String定义,则打印结果为
A()B()C()D()E() constructorA()B()C()D()A()B()C()D()EEE

ps:不宜有过多继承
tlowl 2008-12-12
  • 打赏
  • 举报
回复
为什么要在D类中放主函数?

62,614

社区成员

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

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