zoukankan      html  css  js  c++  java
  • Java 内部类加载顺序

    代码展示

    public class Test {
        static {
            System.out.println("外部类加载了!");
        }
    
        public Test(){
            System.out.println("外部类构造方法!");
        }
    
        /**
         * 静态内部类!
         */
        public static class StaticInnerClass {
            static {
                System.out.println("静态内部类加载了!");
            }
    
            public StaticInnerClass(){
                System.out.println("静态内部构造方法!");
            }
        }
    
        /**
         * 非静态内部类中不允许有静态代码块!
         */
        public class InnerClass {
            public InnerClass(){
                System.out.println("内部构造方法!");
            }
        }
    }
    

    初始化外部类

    public class Test {
        public static void main(String[] args) {
            new Test();
        }
    }
    
    结果:
    外部类加载了!
    外部类构造方法!
    
    总结:
    外部类的初始化,并不会加载静态内部类!
    

    初始化内部类

    public class Test {
        public static void main(String[] args) {
            new Test(). new InnerClass();
        }
    }
    
    结果:
    外部类加载了!
    外部类构造方法!
    内部构造方法!
    
    总结:
    内部类的初始化,会加载外部类。
    

    初始化静态内部类

    public class Test {
        public static void main(String[] args) {
            new Test.StaticInnerClass();
        }
    }
    
    结果:
    外部类加载了!
    静态内部类加载了!
    静态内部构造方法!
    
    总结:
    静态内部类初始化,会加载外部类。
    
  • 相关阅读:
    windows下安装和设置Git客户端
    普通年金终值和现值计算(白话版)
    Git Http Server
    Python容器数据类型——collections
    模拟二进制实现减法
    自己写的线程池
    买书问题
    电梯调度算法
    Python文本常量和模板——string
    shell变量设置与显示
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/15251747.html
Copyright © 2011-2022 走看看