zoukankan      html  css  js  c++  java
  • Java基础

    顺序

    1. 父类中静态成员变量和静态代码块

    2. 子类中静态成员变量和静态代码块

    3. 父类中普通成员变量和代码块,父类的构造函数

    4. 子类中普通成员变量和代码块,子类的构造函数

    其中“和”字两端的按照代码先后顺序执行:父类静态块→子类静态块→父类初始化块(成员变量,非静态代码块等)→父类构造方法→子类初始化块(成员变量,非静态代码块等)→子类构造方法

    规律

    先父后子、先静态后普通(普通成员变量、普通代码块、构造函数按照代码先后顺序执行)

    class Parent {
            /* 静态变量 */
        public static String p_StaticField = "父类--静态变量";
             /* 变量 */
        public String    p_Field = "父类--变量";
        protected int    i    = 9;
        protected int    j    = 0;
            /* 静态初始化块 */
        static {
            System.out.println( p_StaticField );
            System.out.println( "父类--静态初始化块" );
        }
            /* 初始化块 */
        {
            System.out.println( p_Field );
            System.out.println( "父类--初始化块" );
        }
            /* 构造器 */
        public Parent()
        {
            System.out.println( "父类--构造器" );
            System.out.println( "i=" + i + ", j=" + j );
            j = 20;
        }
    }
    
    public class SubClass extends Parent {
             /* 静态变量 */
        public static String s_StaticField = "子类--静态变量";
             /* 变量 */
        public String s_Field = "子类--变量";
            /* 静态初始化块 */
        static {
            System.out.println( s_StaticField );
            System.out.println( "子类--静态初始化块" );
        }
           /* 初始化块 */
        {
            System.out.println( s_Field );
            System.out.println( "子类--初始化块" );
        }
           /* 构造器 */
        public SubClass()
        {
            System.out.println( "子类--构造器" );
            System.out.println( "i=" + i + ",j=" + j );
        }
    
    
            /* 程序入口 */
        public static void main( String[] args )
        {
            System.out.println( "子类main方法" );
            new SubClass();
        }
    }

    上面的初始化结果是:

    • 父类--静态变量

    • 父类--静态初始化块

    • 子类--静态变量

    • 子类--静态初始化块

    • 子类main方法

    • 父类--变量

    • 父类--初始化块

    • 父类--构造器

    • i=9, j=0

    • 子类--变量

    • 子类--初始化块

    • 子类--构造器

    • i=9,j=20

    子类的静态变量和静态初始化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成了。静态变量、静态初始化块,变量、初始化块初始化了顺序取决于它们在类中出现的先后顺序

    例子(必看)

    看 [Java对象的初始化] 小节 https://segmentfault.com/a/1190000009707894  

  • 相关阅读:
    JavaScript实现常见排序算法
    执行环境与作用域
    几种常见的三列布局,中间自适应,两边定宽
    常见的两列布局
    CodeAtlas For Sublime Text
    增加调用路径查找
    增加调用被调用个数隐喻
    sublime 插件
    分析大工程
    Jmeter 分布式测试
  • 原文地址:https://www.cnblogs.com/frankcui/p/13584163.html
Copyright © 2011-2022 走看看