代码块执行顺序。

class Father1{

static{
System.out.println("....static Father.....");
}

{
System.out.println(".....父类非静态。。。");
}

public Father1(){
System.out.println("---父类构造方法----");
}
}

class Son1 extends Father1{

static{
System.out.println("....static Son.....");
}

public Son1(){
System.out.println("---子类构造方法-----");
}
{
System.out.println(".....子类非静态。。。");
}
}

public class Demo3 {

static{
System.out.println("....主函数静态代码.....");
}

{
System.out.println(".....主函数非--------静态代码。。。");
}

public static void main(String[] args) {

Son1 s = new Son1();
System.out.println("----输出完毕-------");
Demo3 d = new Demo3();
}

}

执行结果:

....主函数静态代码.....
....static Father.....
....static Son.....
.....父类非静态。。。
---父类构造方法----
.....子类非静态。。。
---子类构造方法-----
----输出完毕-------
.....主函数非--------静态代码。。。

所以顺序是:

从主函数所在的类执行静态代码块,

从父类执行静态代码块。

从子类执行静态代码块。

非静态代码块要在new对象,构造方法前是才执行;

父类构造方法

子类非静态

子类构造方法

时间: 2024-11-11 11:33:07

代码块执行顺序。的相关文章

java基础复习一、代码块执行顺序

1 /** 2 * 代码块执行顺序的测试 3 * 执行顺序 静态代码块>main代码块>构造代码块>构造函数>普通代码块 4 * @author Administrator 5 * 6 */ 7 public class ClassDemo01 { 8 static { 9 System.out.println("这是一个静态代码块"); 10 } 11 { 12 System.out.println("这是一个构造代码块"); 13 } 1

Java中普通代码块,构造代码块,静态代码块执行顺序

执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. static块,普通代码块,构造代码块执行顺序 class A{ public A(){ System.out.println("Hello A"); } { System.out.println("block A"); } static{ System.out.println("static A

修饰符-包-内部类-代码块执行顺序

1.访问权限修饰符     从大到小的顺序为:public--protected--default--private     private--只能在同一类中使用;     default--不用写出来,默认不加.可以被同一包中的类使用     protected--可以被不同包的子类使用     public--可以被不同包的其它类使用 2.各种修饰符的修饰对象(可修饰哪些:类/接口/方法/属性)(多个修饰符连用是可以没有顺序的!)     1)访问权限修饰符:public/default--

java代码块执行顺序

1.测试类 public class Demo extends SuperDemo { //静态代码块 static{ System.out.println("this is static block"); } //普通代码块 { System.out.println("this is normal block"); } //默认构造函数 public Demo(){ System.out.println("this is demo constructor

Java中代码块执行顺序

代码块:在Java中,使用{}括起来的代码被称为代码块.根据其位置和声明的不同,可以分为 局部代码块:局部位置,用于限定变量的生命周期.构造代码块:在类中的成员位置,用{}括起来的代码.每次调用构造方法执行前,都会先执行构造代码块.作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化.静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰了.作用:一般是对类进行初始化. 静态代码块,构造代码块,构造方法的执行顺序? 首先执行静态代码块 接着执行构造代码块 最后指向

Java--普通代码块静态代码块执行顺序

1 class B { 2 3 public B() { 4 super(); 5 System.out.println("构造器B"); 6 } 7 { 8 System.out.println("普通的代码块B"); 9 } 10 static{ 11 System.out.println("静态代码块B"); 12 } 13 14 } 15 public class ClassA extends B { 16 17 public Class

JavaSE8基础 父子类中都有静态代码块与构造代码块,执行顺序的简单示例

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: //父类 class Father { //静态代码块 static { System.out.println("父类的静态代码块"); } //构造代码块 { System.out.println("父类的构造代码块"); } public Father() { System.

Java 静态代码块执行顺序

public class Test1 {public static int k=0;public static Test1 t1 = new Test1("t1");public static Test1 t2 = new Test1("t2");public static int i = print("i");public static int n = 99;public static int j = print("j");

继承中代码的执行顺序

在继承中代码的执行顺序为:1.父类静态对象和静态代码块   2.子类静态对象和静态代码块 3.父类非静态对象和非静态代码块  4.父类构造函数 5.子类非静态对象和非静态代码块  6.子类构造函数 1.对于本题来说:在只想new Sub(5)的时候,父类先初始化了 int flag = 1,然后执行父类的构造函数Super(),父类构造函数中执行的test()方法,因子类是重写了test()方法的,因此父类构造函数中的test()方法实际执行的是子类的test()方法,所以输出为Sub.test