zoukankan      html  css  js  c++  java
  • (一道面试题)生成实例时代码的执行顺序

    一.编写父类对象:

    public class Father {
    	public Father() {
    		// TODO Auto-generated constructor stub
    		System.out.println("我是Father的构造方法");
    	}
    	{
    	   System.out.println("我是Father的代码快");	
    	}
    	static
    	{
    		 System.out.println("我是Father的static代码快");	
    		}
    }
    

    二.编写子类对象:

    public class Son extends Father {
        public Son() {
            // TODO Auto-generated constructor stub
            System.out.println("我是Son的构造方法");
        }
        {
           System.out.println("我是Son的代码快");    
        }
        static
        {
             System.out.println("我是Son的static代码快");    
            }
    }

    三.编写测试类:

    public class Test {
        public static void main(String[] args) {
            Son son=new Son();
        }
    }

    四.实验结果:

    五.总结:

    出现了6句话,这6句话也代表了调用过程.

    1).最先开始调用static的方法.父类static块---->子类static块

    2).执行父类方法

      代码块的执行顺序优于构造方法.先调用执行代码块代码-->再执行父类构造方法的代码

    3).执行子类方法

       代码块的执行顺序优于构造方法.先调用执行代码块代码-->再执行子类构造方法的代码

     结论:父类静态代码块--->子类静态代码块--->父类代码块--->父类构造方法代码--->子类代码块--->子类构造方法代码

  • 相关阅读:
    白名单执行payload之rundll32
    java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonNode
    Redis key过期监听
    Kafka拦截器
    常用工具类
    Redis Pipelining
    Redis 发布订阅(Pub/Sub)
    Redis Stream
    模拟Spring自实现监听器
    Jackson
  • 原文地址:https://www.cnblogs.com/hckblogs/p/7880625.html
Copyright © 2011-2022 走看看