父类构造方法没有运行竟然就加载完了?

lliiqiang 2009-09-10 06:52:58
我的代码:
package com;
public class A {
static{
try {
new C().start();//启动另外一个线程
Thread.sleep(3000);//为了实现顺序,在这里耽搁3秒
System.out.println("A");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] a){
}
}//在这里运行
package com;

public class B{
static int a=2;
static {
System.out.println("static b");
}
public B(){
System.out.println("b");
}
}
package com;

public class C extends Thread{
static{
System.out.println("static c");
}
public void run(){
System.out.println(new B());//加载B
}
public C(){
System.out.println("c");
}
}
结果是:
static c
c
static b
b//直接加载B类和构造方法
com.B@61de33
A//然后加载类A,连A得构造方法都没有运行
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiantian118 2009-09-21
  • 打赏
  • 举报
回复
呵呵,支持大家的说法,A类只因它包含main方法,所以最开始被加载,静态方法与静态属性,静态语句块被同时加载,然后才是用到那个类加载哪个类,或创建对象
walkerdh 2009-09-10
  • 打赏
  • 举报
回复
2楼正解

你new 一个c出来再看结果
lotusword 2009-09-10
  • 打赏
  • 举报
回复
类的构造方法是在类实例化的时候调用的,你的类A压根就没有实例化,怎么可能调用呢
lxxzhy 2009-09-10
  • 打赏
  • 举报
回复
抢沙发.

62,614

社区成员

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

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