class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Code4{
public static void main(String[] ars){
A ab = new B();
ab = new B();
}
}
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Code4{
public static void main(String[] ars){
A ab = new B();
ab = new B();
}
}
解决方案 »
- 有一定的挑战性:两台电脑传通讯,很简单的传输一点ascii数据,用什么协议比较好呢?
- 关于布局管理器
- 一个double问题
- 请问下设计模式那本书比较好啊?
- 80分散分!!解决了就给分,其实是小问题
- 送分题
- 搞不懂,为什么,程序一运行XX就已经画好了
- 新手,安装Tomcat 问题?
- 我想横着打,但他总是竖着打印。我已经设置了pageformat.setOrientaion(PageFormat.LANDSCAPES) ,问什么不行?
- 请教一个Swing的技术问题.
- 使用HttpURLConnection 访问域名 报java.net.UnknownHostException异常
- 求助,这个为啥会输出-10
然后是执行静态代码块(在加载时进行,与子类构造器调用无关)(先加载父类的其次是子类
的),完成以后程序才会进入main()方法中,执行new语句,两个都是先调用父类构造器再
调用子类构造器。所以你调用几次都是一样的顺序,而且不要认为第一次调用时会先执行静态
初始化块,不是这样的,静态的会在类加载时加载并初始化,那个时候程序只是在加载算是准
备阶段,只有之后进入main方法中才算是代码的开始运作。