zoukankan      html  css  js  c++  java
  • Java 类的成员初始化顺序

    做个简单笔录,就当是重温下基础知识。

    1.先看代码:

      

    package com.test;
    
    public class Test {
    	
        public static void main(String[] args) {
            Son s = new Son();
        }
     
    }
     
    class Parent{
     
    	int parent = 10;
    	
        {
            System.out.println("parent中的初始化块");
        }
        static{
            System.out.println("parent中static初始化块");
        }
         
        public Parent(){
            System.out.println("parent构造方法");
        }
    }
     
    class Son extends Parent{
    	int son = 10;
    	
        {
            System.out.println("son中的初始化块");
        }
         
        static{
        	
            System.out.println("son中的static初始化块");
            
        }
         
        public Son(){
            System.out.println("son构造方法");
        }
         
    }
    

      执行结果:

      

    2.变量和静态变量

      从上面我们可以看到静态语句块普通语句块和构造函数的执行顺序,那么成员变量和静态变量又是怎么实例化的呢?

     

    可见实例成员和实例初始化块,按在代码中出现的顺序依次执行

    3.总结

      属性、方法、构造方法和自由块都是类中的成员,在创建类的对象时,类中各成员的执行顺序:
      1).父类静态成员和静态初始化快,按在代码中出现的顺序依次执行。
      2).子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
      3). 父类的实例成员和实例初始化块,按在代码中出现的顺序依次执行。
      4).执行父类的构造方法。
      5).子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
      6).执行子类的构造方法。

  • 相关阅读:
    AM3715/DM3730 更改内存大小后kernel boot不起来的解决办法
    xslt转换xml文档&&xslt call java方法
    VSCode 运行go test显示打印日志
    tomcat作为windows服务的参数配置,特别是PermSize的设置
    高亮显示web页表格行
    深入分析 Java 中的中文编码问题
    webwork和spring多配置文件的方法
    Bug笔记:诡异的$.ajax
    C#多态
    委托的本质
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4409545.html
Copyright © 2011-2022 走看看