精华内容
下载资源
问答
  • Java类初始化顺序

    2019-05-27 20:18:04
    文章目录一、Java类初始化顺序说明二、初始化顺序三、总结普通类:继承的子类:抽象的实现子类: 接口 - 抽线类 - 实现类接口注意: 一、Java类初始化顺序说明 一个类中包含如下几类东西,他们前后是有顺序关系的 1....

    一、Java类初始化顺序说明

    一个类中包含如下几类东西,他们前后是有顺序关系的
    1.静态属性:static 开头定义的属性
    2.静态方法块: static{}圈起来的方法块
    3.普通属性:未带static定义的属性
    4.普通方法块:{}圈起来的方法块
    5.构造函数:类名相同的方法
    6.方法:普通方法

    二、初始化顺序

    public class LifeCycle {
        // 静态属性
        private static String staticField = getStaticField();
        // 静态方法块
        static {
            System.out.println(staticField);
            System.out.println("静态方法块初始化");
            System.out.println("Static Patch Initial");
        }
        // 普通属性
        private String field = getField();
        // 普通方法块
        {
            System.out.println(field);
            System.out.println("普通方法块初始化");
            System.out.println("Field Patch Initial");
        }
        // 构造函数
        public LifeCycle() {
            System.out.println("构造函数初始化");
            System.out.println("Structure Initial ");
        }
    
        public static String getStaticField() {
            String statiFiled = "Static Field Initial";
            System.out.println("静态属性初始化");
            return statiFiled;
        }
    
        public static String getField() {
            String filed = "Field Initial";
            System.out.println("普通属性初始化");
            return filed;
        }   
        // 主函数
        public static void main(String[] argc) {
            new LifeCycle();
        }
    }
    

    执行代码:
    在这里插入图片描述

    三、总结

    排前面的先执行

    普通类:

    静态变量
    静态代码块
    普通变量
    普通代码块
    构造函数

    继承的子类:

    父类静态变量
    父类静态代码块
    子类静态变量
    子类静态代码块
    父类普通变量
    父类普通代码块
    父类构造函数
    子类普通变量
    子类普通代码块
    子类构造函数

    抽象的实现子类: 接口 - 抽线类 - 实现类

    接口静态变量
    抽象类静态变量
    抽象类静态代码块
    实现类静态变量
    实习类静态代码块
    抽象类普通变量
    抽象类普通代码块
    抽象类构造函数
    实现类普通变量
    实现类普通代码块
    实现类构造函数

    接口注意:

    声明的变量都是静态变量并且是final的,所以子类无法修改,并且是固定值不会因为实例而变化
    接口中能有静态方法,不能有普通方法,普通方法需要用defalut添加默认实现
    接口中的变量必须实例化
    接口中没有静态代码块、普通变量、普通代码块、构造函数

    展开全文
  • java类初始化顺序

    2018-09-12 15:56:57
    Java类初始化顺序说明 一个类中包含如下几类东西,他们前后是有顺序关系的 静态属性:static 开头定义的属性 静态方法块: static {} 圈起来的方法块 普通属性: 未带static定义的属性 普通方法块: {} 圈起来的...
    转自:https://www.cnblogs.com/fly-piglet/p/8766226.html

    Java类初始化顺序说明

    一个类中包含如下几类东西,他们前后是有顺序关系的

    1. 静态属性:static 开头定义的属性
    2. 静态方法块: static {} 圈起来的方法块
    3. 普通属性: 未带static定义的属性
    4. 普通方法块: {} 圈起来的方法块
    5. 构造函数: 类名相同的方法
    6. 方法: 普通方法

    初始化顺序

    public class LifeCycle {
    // 静态属性
    private static String staticField = getStaticField();
    // 静态方法块
    static {
    System.out.println(staticField);
    System.out.println("静态方法块初始化");
    System.out.println("Static Patch Initial");
    }
    // 普通属性
    private String field = getField();
    // 普通方法块
    {
    System.out.println(field);
    System.out.println("普通方法块初始化");
    System.out.println("Field Patch Initial");
    }
    // 构造函数
    public LifeCycle() {
    System.out.println("构造函数初始化");
    System.out.println("Structure Initial ");
    }

    public static String getStaticField() {
    String statiFiled = "Static Field Initial";
    System.out.println("静态属性初始化");
    return statiFiled;
    }

    public static String getField() {
    String filed = "Field Initial";
    System.out.println("普通属性初始化");
    return filed;
    }
    // 主函数
    public static void main(String[] argc) {
    new LifeCycle();
    }
    }

    执行结果:

    静态属性初始化
    Static Field Initial
    静态方法块初始化
    Static Patch Initial
    普通属性初始化
    Field Initial
    普通方法块初始化
    Field Patch Initial
    构造函数初始化
    Structure Initial

    总结:包含父子类和接口类

    普通类:
    • 静态变量
    • 静态代码块
    • 普通变量
    • 普通代码块
    • 构造函数
    继承的子类:
    • 父类静态变量
    • 父类静态代码块
    • 子类静态变量
    • 子类静态代码块
    • 父类普通变量
    • 父类普通代码块
    • 父类构造函数
    • 子类普通变量
    • 子类普通代码块
    • 子类构造函数
    抽象的实现子类: 接口 - 抽线类 - 实现类
    • 接口静态变量
    • 抽象类静态变量
    • 抽象类静态代码块
    • 实现类静态变量
    • 实习类静态代码块
    • 抽象类普通变量
    • 抽象类普通代码块
    • 抽象类构造函数
    • 实现类普通变量
    • 实现类普通代码块
    • 实现类构造函数
    接口注意:
    • 声明的变量都是静态变量并且是final的,所以子类无法修改,并且是固定值不会因为实例而变化
    • 接口中能有静态方法,不能有普通方法,普通方法需要用defalut添加默认实现
    • 接口中的变量必须实例化
    • 接口中没有静态代码块、普通变量、普通代码块、构造函数
    展开全文
  • Java 类初始化顺序

    2015-08-16 14:15:06
    Java 类初始化顺序为 1、父类静态字段初始化 2、子类静态字段初始化 3、父类普通字段初始化 4、父类构造器执行 5、子类普通字段初始化 6、子类构造器执行 点击(此处)折叠或打开 ...
    Java 类初始化顺序为
    1、父类静态字段初始化
    2、子类静态字段初始化
    3、父类普通字段初始化
    4、父类构造器执行
    5、子类普通字段初始化
    6、类构造器执行

    点击(此处)折叠或打开

    1. import java.util.Random;

    2. public class InitOrder {
    3.     public static int getInt(String info){
    4.         System.out.println(info);
    5.         Random random = new Random(47);
    6.         return random.nextInt();
    7.     }
    8.     public static void main(String [] args){
    9.         new Son();
    10.         // 关注 Father 的 filed 与 Son 的sonFiled的初始化
    11.     }
    12. }

    13. class Son extends Father{
    14.     private int sonFiled = InitOrder.getInt("子类普通字段初始化");
    15.     private static int sonStaticFiled = InitOrder.getInt("子类静态字段初始化");
    16.     public Son(){
    17.         this.sonFiled = InitOrder.getInt("子类构造器执行");
    18.     }
    19.     public int getSonFiled() {
    20.         return sonFiled;
    21.     }
    22.     public void setSonFiled(int sonFiled) {
    23.         this.sonFiled = sonFiled;
    24.     }
    25.     public static int getSonStaticFiled() {
    26.         return sonStaticFiled;
    27.     }
    28.     public static void setSonStaticFiled(int sonStaticFiled) {
    29.         Son.sonStaticFiled = sonStaticFiled;
    30.     }

    31.     
    32. }
    33. class Father{
    34.     private int filed = InitOrder.getInt("父类普通字段初始化");
    35.     private static int staticFiled = InitOrder.getInt("父类静态字段初始化");
    36.     public Father(){
    37.         this.filed = InitOrder.getInt("父类构造器执行");
    38.     }
    39.     public int getFiled() {
    40.         return filed;
    41.     }
    42.     public void setFiled(int filed) {
    43.         this.filed = filed;
    44.     }
    45.     public static int getStaticFiled() {
    46.         return staticFiled;
    47.     }
    48.     public static void setStaticFiled(int staticFiled) {
    49.         Father.staticFiled = staticFiled;
    50.     }
    51.     
    52. }


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30066956/viewspace-1773078/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/30066956/viewspace-1773078/

    展开全文
  • java 类初始化顺序

    2020-11-08 01:49:04
    初始化顺序为: 静态变量 静态块 实例变量 实例块 构造函数 代码测试:在这里插入代码片 class InstanceTest{ public InstanceTest() { System.out.println(“实例变量”); } } class StaticTest{ public StaticTest...

    初始化顺序为:
    静态变量
    静态块
    实例变量
    实例块
    构造函数
    代码测试:在这里插入代码片
    class InstanceTest{
    public InstanceTest() {
    System.out.println(“实例变量”);
    }
    }
    class StaticTest{
    public StaticTest() {
    System.out.println(“静态变量”);
    }
    }
    class InitializationSequence {
    private static StaticTest count = new StaticTest();
    private InstanceTest name = new InstanceTest();

    static {//专门初始化静态变量
        System.out.println("静态块");
    }
    
    {//专门初始化实例变量的
        System.out.println("实例块");
    }
    
    public InitializationSequence() {
        System.out.println("构造函数");
    }
    

    }
    public class DemoInitialization {
    public static void main(String[] args) {
    InitializationSequence initializationSequence = new InitializationSequence();
    }
    }
    输出结果:
    在这里插入图片描述

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,570
精华内容 2,228
关键字:

java类初始化顺序

java 订阅