java 静态代码块、非静态代码块

    科技2024-12-05  37

    静态代码块只在第一次创建对象时执行,非静态代码块在每次创建对象时都会执行

    创建指的是new和反射

    package day10_7; public class Main { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { A a = new A(); Class<?> classa = Class.forName("day10_7.A"); A b = (A)classa.newInstance(); } } class A{ static{ System.out.println("static代码块"); } { System.out.println("非静态代码块"); } } static代码块 非静态代码块 非静态代码块

    new子类对象时:父类+子类+构造方法+静态代码块+费静态代码块执行情况

    package day10_7; public class Main { public static void main(String[] args) throws Exception{ A a = new A(); } } class A extends B{ static{ System.out.println("子类static代码块"); } { System.out.println("子类非静态代码块"); } public A(){ System.out.println("子类构造方法"); } } class B { static{ System.out.println("父类static代码块"); } { System.out.println("父类非静态代码块"); } public B(){ System.out.println("父类构造方法"); } } 父类static代码块 子类static代码块 父类非静态代码块 父类构造方法 子类非静态代码块 子类构造方法

     

    Processed: 0.011, SQL: 8