zoukankan      html  css  js  c++  java
  • 类加载顺序(2)

    package loader;
    
    public class Animal{
        public String test="AnimalField";
        public static String testStatic="AnimalStaticField";
        
        public Animal(){
            System.out.println("Animal的构造方法");
        }
        public void testA(){
            System.out.println("Animal的普通方法");
        }
        public static void testStatic(){
            System.out.println("Animal的静态方法");
        }
        
        {
            this.testA();
            System.out.println("Animal的普通块");
        }
        static{
            Animal.testStatic();
            System.out.println("Animal的静态块");
        }
        
    
    }
    package loader;
    
    public class Person extends Animal{
        public String test="PersonField";
        public static String testStatic="PersonStaticField";
        
        public Person(){
            System.out.println("Person的构造方法");
        }
        public void testP(){
            System.out.println("Person的普通方法");
        }
        public static void testStatic(){
            System.out.println("Person的静态方法");
        }
        
        {
            this.testP();
            System.out.println("Person的普通块");
        }
        
        static{
            Person.testStatic();
            System.out.println("Person的静态块");
        }
        
    
    }
    package loader;
    
    public class Test {
    
        
        /**类加载顺序
         * 二:由子类调用父类构造方法的情况
         * 1.创建子类对象(未完成)
         * 2.先调用父类的构造方法(未完成)
         * 3.加载父类的静态块>加载子类的静态块>加载父类的普通块>完成父类的构造函数>加载子类的普通块>完成子类构造函数
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Person p=new Person();
            
        }
    
    }

     输出顺序:

    Animal的静态方法
    Animal的静态块
    Person的静态方法
    Person的静态块
    Animal的普通方法
    Animal的普通块
    Animal的构造方法
    Person的普通方法
    Person的普通块
    Person的构造方法

  • 相关阅读:
    Java职业生涯规划
    Java类加载器总结
    Java字节流与字符流的区别
    Java堆和栈的区别
    详解Java类的生命周期
    Java编程常见问题汇总
    Java总结输入流输出流
    Java NIO:浅析I/O模型
    perl 处理文件路径的一些模块
    Delphi第三方控件安装卸载指南
  • 原文地址:https://www.cnblogs.com/hebiao/p/12450643.html
Copyright © 2011-2022 走看看