• 讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当 new 的时候, 他们的执行顺序


    父类静态代变量、
    父类静态代码块、
    子类静态变量、
    子类静态代码块、
    父类非静态变量(父类实例成员变量)、
    父类构造函数、
    子类非静态变量(子类实例成员变量)、
    子类构造函数。

    代码案例:

    package jvm.test;
    
    /*
    类加载器加载顺序考究
     */
    public class TestB {
        public static void main(String[] args) {
            son sons=new son();
        }
    }
    
    class parent{
        private static  int a=1;
        private static  int b;
        private   int c=initc();
        static {
            b=1;
            System.out.println("1.父类静态代码块:赋值b成功");
            System.out.println("1.父类静态代码块:a的值"+a);
        }
        int initc(){
            System.out.println("3.父类成员变量赋值:---> c的值"+c);
            this.c=12;
            System.out.println("3.父类成员变量赋值:---> c的值"+c);
            return c;
        }
        public parent(){
            System.out.println("4.父类构造方式开始执行---> a:"+a+",b:"+b);
            System.out.println("4.父类构造方式开始执行---> c:"+c);
        }
    }
    
    class son extends parent{
        private static  int sa=1;
        private static  int sb;
        private   int sc=initc2();
        static {
            sb=1;
            System.out.println("2.子类静态代码块:赋值sb成功");
            System.out.println("2.子类静态代码块:sa的值"+sa);
        }
        int initc2(){
            System.out.println("5.子类成员变量赋值--->:sc的值"+sc);
            this.sc=12;
            return sc;
        }
        public son(){
            System.out.println("6.子类构造方式开始执行---> sa:"+sa+",sb:"+sb);
            System.out.println("6.子类构造方式开始执行---> sc:"+sc);
        }
    }
  • 相关阅读:
    js 控制页面跳转的5种方法
    js外部文件问题
    JS设置cookie,删除cookie
    JS中的输出
    转:这些年我们爱犯的弱智错误(菜鸟必看)
    JS 代码调试经验总结(菜鸟必读)
    js中err
    不理解,如果有高手看到了,请帮忙解答,谢谢啦~
    window对象和全局变量,局部变量的疑问
    看script中函数的各种不同形式的结果
  • 原文地址:https://www.cnblogs.com/funian/p/15099985.html
Copyright © 2020-2023  润新知