zoukankan      html  css  js  c++  java
  • java初始化顺序

     1 package com.zhangcy.test.init;
     2 
     3 public class Base {
     4     
     5     int str;
     6     static int val1=1;
     7     final int val2=2;
     8     static final int val3 = 3;
     9     
    10     public Base(final int s){
    11         printStr();
    12         System.out.println("pre-base:"+str);
    13         str = s;
    14         this.printStr();
    15         System.out.println("aft-base:"+str);
    16     }
    17     
    18     public Base(){
    19         printStr();
    20     }
    21     
    22     private void printStr(){
    23         System.out.println("base:"+str);
    24         System.out.println("base-val1:"+val1);
    25         System.out.println("base-val2:"+val2);
    26         System.out.println("base-val3:"+val3);
    27     }
    28 
    29 }
    package com.zhangcy.test.init;
    
    
    public class Derived extends Base {
    
        int str;
        static int val1=4;
        final int val2=5;
        static final int val3=6;
        
        //Base base = new Base(str);
        //static Base base2 = new Base();
        
        public Derived(int s) {
            super();
            System.out.println("pre-derived:"+str);
            str = s;
            System.out.println("aft-derived:"+str);
            printStr();
        }
        
        public void printStr(){
            System.out.println("derived:"+str);
            System.out.println("derived-val1:"+val1);
            System.out.println("derived-val2:"+val2);
            System.out.println("derived-val3:"+val3);
        }
    
    }
    package com.zhangcy.test.init;
    
    
    public class Basetest {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            /*float f = (short)10/10.2f*2;
            double d = (short)10/10*2;*/
            
            Derived derived = new Derived(1);
            //derived = new Derived(10);
            //Derived derived1 = new Derived(20);
             Base base = new Derived(3);
             
            
        }
    
    }

    1、父类的static变量,逐个上溯,找到最顶级的父类的static变量,依次往下初始化,直至当前类。

    2、进入当前类的构造方法,构造方法第一句当然是调用父类的构造方法,依次上溯,找到最顶级的父类,先初始化父类的实例变量,再执行父类构造方法里面的语句,这样依次往下进入当前类,初始化当前类的实例变量,再执行当前类构造方法中调用父类构造方法之后的语句。

    (未完待续)

  • 相关阅读:
    [Micropython]发光二极管制作炫彩跑马灯
    如何在MicroPython TPYBoard 添加自定义类库
    micropython TPYBoard v202 超声波测距
    简易排水简车的制作 TurnipBit 系列教程
    TPYBoard v102 驱动28BYJ-48步进电机
    使用mksdcard管理虚拟SD卡
    使用 DX 编译 Android应用
    常用ADB的用法
    在命令行创建、删除和浏览AVD、使用android模拟器
    Android-SDK下目录结构
  • 原文地址:https://www.cnblogs.com/zhangcybb/p/3977781.html
Copyright © 2011-2022 走看看