zoukankan      html  css  js  c++  java
  • java类的加载顺序和实例化顺序(Demo程序)

    一、main函数中实例化对象

    父类

    package com.learn;
    
    public class Father {
    
        //静态变量
        public static int num_1 = 1;
    
        //静态代码块
        static {
            //判断静态变量和静态代码块的执行顺序
            System.out.println("Father类的静态变量" + num_1);
            System.out.println("Father类的静态代码块");
        }
    
        //普通变量
        public int num_2 = 2;
    
        //匿名代码块
        {
            System.out.println("Father类的普通变量=" + num_2);
            System.out.println("Father类的匿名代码块");
        }
    
        //构造函数
        public Father() {
            System.out.println("Father类的构造函数");
        }
    
    }
    
    

    子类

    package com.learn;
    
    public class Son extends Father{
    
        //静态变量
        public static int num_3 = 3;
    
        //静态代码块
        static {
            //判断静态变量和静态代码块的执行顺序
            System.out.println("Son类的静态变量" + num_3);
            System.out.println("Son类的静态代码块");
        }
    
        //普通变量
        public int num_4 = 4;
    
        //匿名代码块
        {
            System.out.println("Son类的普通变量=" + num_4);
            System.out.println("Son类的匿名代码块");
        }
    
        //构造函数
        public Son() {
            System.out.println("Son类的构造函数");
        }
    
        //主函数
        public static void main(String[] args) {
            Son Son = new Son();
        }
    }
    
    

    运行结果

    Father类的静态变量1
    Father类的静态代码块
    Son类的静态变量3
    Son类的静态代码块
    Father类的普通变量=2
    Father类的匿名代码块
    Father类的构造函数
    Son类的普通变量=4
    Son类的匿名代码块
    Son类的构造函数
    

    二、main函数中不实例化对象

    //主函数
        public static void main(String[] args) {
            //Son Son = new Son();
        }
    

    运行结果

    Father类的静态变量1
    Father类的静态代码块
    Son类的静态变量3
    Son类的静态代码块
    

    三、结论

    类在加载时:父类静态变量>父类静态代码块>子类静态变量>大于子类静态代码块
    类在实例化时:父类非静态变量>父类匿名代码块>父类构造函数>子类非静态变量>子类非静态代码块>子类构造函数

  • 相关阅读:
    如何用js判断一个对象是不是Array
    js实现数组去重怎么实现?
    点击一个ul的五个li元素,分别弹出他们的序号,怎么做?
    盒子模型
    13. 查看网络端口、配置网络
    12. 查看系统硬件配置
    11. 系统状态管理
    9. iptables 配置
    10. 编译软件包
    8. 管理软件包
  • 原文地址:https://www.cnblogs.com/mlr-wjy/p/12426509.html
Copyright © 2011-2022 走看看