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的构造方法

  • 相关阅读:
    Eureka的使用
    自定义类加载器
    继承
    Active Objects模式
    Future设计模式
    mysql备份与还原
    多生产者多消费者(第一种方式),基于synchronized,wait,notifyAll
    自己实现阻塞队列(基于数组)
    linux定时任务每隔5分钟向文本追加一行
    自己实现CountDownLatch
  • 原文地址:https://www.cnblogs.com/hebiao/p/12450643.html
Copyright © 2011-2022 走看看