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

     

    java继承 初始化顺序

    标签: 初始化顺序
     分类:
    [java] view plaincopy
     
    1. package Study.Initialization;  
    2.   
    3. class Base{  
    4.     private String str1=init("str1");  
    5.     private String str2=init("str2");  
    6.     public static String str3=init("static str3");  
    7.       
    8.     public Base(String str1,String str2){  
    9.         System.out.println("Run Construction Base");  
    10.         this.str1=str1;  
    11.         this.str2=str2;  
    12.     }  
    13.       
    14.     protected static String init(String str){  
    15.         System.out.println(str);  
    16.         return str+" init";  
    17.     }  
    18. }  
    19.   
    20. class Derived extends Base{  
    21.     private String str4=init("str4");  
    22.     public static String str5=init("static str5");  
    23.     public Derived(String str1,String str2,String str4){  
    24.         super(str1,str2);  
    25.         System.out.println("Run Construction Derived");  
    26.         this.str4=str4;  
    27.     }  
    28. }  
    29.   
    30. public class extendInitialization {  
    31.     public static void main(String[] args) {  
    32.         System.out.println("run extendInitialization.main()");  
    33.         Derived d=new Derived("construction str1","construction str2","construction str4");   
    34.         System.out.println("----------------------------------------");  
    35.         Derived d2=new Derived("construction str11","construction str22","construction str44");   
    36.     }  
    37.   
    38. }  


    运行结果:

    run extendInitialization.main()
    static str3
    static str5
    str1
    str2
    Run Construction Base
    str4
    Run Construction Derived
    ----------------------------------------
    str1
    str2
    Run Construction Base
    str4
    Run Construction Derived
    总结:
       Derived的初始化顺序:
        1.按定义时的顺序初始化基类的static成员
        2..按定义时的顺序初始化扩展类的static成员
        (以上两条是对第一次定义扩展类对象时运行)
        3.按定义时顺序执行基类的指定初始化
        4.执行基类的构造函数 
        5 按定义时的顺序执行扩展类的指定初始化
        6.行扩展类的构造函数
  • 相关阅读:
    启动ZOOKEEPER之后能查看到进程存在但是查不到状态,是因为。。。
    多线程后续讲解及代码测试
    多线程详解和代码测试
    数据操作流
    字符流详解及代码测试
    IO流详解及测试代码
    递归概要及经典案例
    File基本操作
    异常精解
    iOS之多线程NSOperation
  • 原文地址:https://www.cnblogs.com/lubocsu/p/5097554.html
Copyright © 2011-2022 走看看