• 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.行扩展类的构造函数
  • 相关阅读:
    opengl中的阴影映射
    怎样实现全屏显示(vc)
    刚花了10800大元买了一台IBM ThinkPad T60 dh2(港行水货)
    64位进程调用32位dll的解决方法
    转贴: OpenGL开发库的组成
    64位程序编译:终于将City****由32位编译为64位了
    opengl中的阴影体
    [转贴+更新]关于Directshow SDK 和Windows SDK
    安全专家称不再向厂商免费提供漏洞信息 狼人:
    国图新馆暴发网络病毒 来源或为读者自带笔记本 狼人:
  • 原文地址:https://www.cnblogs.com/lubocsu/p/5097554.html
Copyright © 2020-2023  润新知