zoukankan      html  css  js  c++  java
  • Java中构造函数执行顺序的问题

    1,  先执行内部静态对象的构造函数,如果有多个按定义的先后顺序执行;而且静态类的构造函数只会被执行一次,只在其第一个对象创建时调用,即便是创建了同一个类的多个对象,例如main()函数里b1,b2创建了同一个类的两个对象,但是grandmaMotherClass的构造函数只被执行了一次

    2,  再执行父类的构造函数(c++中如果有多个,可按照左右先后顺序执行)

    3,  再执行内部普通对象的构造函数

    4,  最后执行该类本身的构造函数

    class grandpaClass{ //
    
        public grandpaClass(){
    
           System.out.println("1912年 爷爷 出生了");
    
        }
    
    }
    
     
    
    class fatherClass extends grandpaClass{
    
        public fatherClass(){
    
           System.out.println("1956年 爸爸 出生了");
    
        }
    
    }
    
     
    
    class grandmaMotherClass{
    
        public grandmaMotherClass(){
    
           System.out.println("奶奶的妈妈 是 1890年出生的");
    
        }
    
    }
    
     
    
    class gandmaClass{
    
        static int year = 0;
    
        static grandmaMotherClassnnmm = new grandmaMotherClass();
    
        public gandmaClass(){
    
           year = 1911;
    
           System.out.println(year + "年 奶奶 出生了");
    
        }
    
       
    
        public gandmaClass(int count){
    
           year += count;
    
           System.out.println(year + "年 奶奶的妹妹 出生了");
    
        }
    
    }
    
     
    
    class motherClass{
    
        public motherClass(){
    
           System.out.println("1957年 妈妈 出生了");
    
        }
    
    }
    
     
    
    public class javaclass extends fatherClass{
        /**
    
         * @param args
    
         */
    
        motherClass b = new motherClass();;
    
        static gandmaClass b1 = new gandmaClass();
    
        static gandmaClass b2 = new gandmaClass(2);
    
        public javaclass(){
    
           System.out.println("1981年 我 出生了");
    
        }
    
        public static void main(String[] args) {
    
           // TODO Auto-generatedmethod stub
    
           System.out.println("mainfunction is called");
    
           javaclass my = new javaclass();
        }
    
    }
    执行结果如下:
    
    奶奶的妈妈 是 1890年出生的
    1911年 奶奶 出生了
    1913年 奶奶的妹妹 出生了
    main function is called
    1912年 爷爷 出生了
    1956年 爸爸 出生了
    1957年 妈妈 出生了
    1981年 我 出生了
  • 相关阅读:
    Mybatis(spring)(多个参数)(插入数据返回id)
    乱码的情况
    struts2常用类型的Result
    struts2中的session使用
    linux查看端口占用程序
    webservice笔记
    Java读文件夹
    JSON笔记
    about Base64
    【转载】MyEclipse6.5 KeyGen
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4867303.html
Copyright © 2011-2022 走看看