zoukankan      html  css  js  c++  java
  • 类初始化顺序

    package staticinit.one;
    
    public class ClassInitOrder {
        public static void main(String[] args) {
            new Son();
            /*
             * Father staticVal print()...
             * Father staticBlock print()...
             * Son staticVal print()...
             * Son staticBlock print()...
             * Father instanceVal print()...
             * Father instanceBlock print()...
             * Father constructor...
             * Son instanceVal print()...
             * Son instanceBlock print()...
             * Son constructor...
             */
        }
    }
    
    class Father {
    
        private static String staticVal = print("staticVal");
        private String instanceVal = print("instanceVal");
        {
            print("instanceBlock");
        }
        static {
            print("staticBlock");
        }
    
        public Father() {
            System.out.println("Father constructor...");
        }
    
        public static String print(String name) {
            System.out.println("Father " + name + " print()...");
            return null;
        }
    }
    
    class Son extends Father {
    
        private static String staticVal = print("staticVal");
        private String instanceVal = print("instanceVal");
        {
            print("instanceBlock");
        }
        static {
            print("staticBlock");
        }
    
        public Son() {
            System.out.println("Son constructor...");
        }
    
        public static String print(String name) {
            System.out.println("Son " + name + " print()...");
            return null;
        }
    
    }

    注:域和块的初始化先后顺序取决于其在类中的位置先后。(类的域、块与类的方法有何却别,为何域和块会自动被初始化,而方法不会被初始化?)
    这里写图片描述

  • 相关阅读:
    AES-GCM算法
    Linux Curl命令
    OpenLDAP
    网络性能测试
    LoadRunner
    XSLT
    dtruss
    删除重复图片
    2018年部门管理的一点总结
    矢量地图方案的进一步探讨
  • 原文地址:https://www.cnblogs.com/wjc920/p/9256176.html
Copyright © 2011-2022 走看看