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年 我 出生了
  • 相关阅读:
    同步和异步有何异同?在什么情况下分别使用他们?举例说明
    Java检查异常和非检查异常,运行时异常和非运行时异常的区别
    运行时异常与受检异常有何异同、error和exception有什么区别
    sleep() 和 wait() 有什么区别?
    final, finally, finalize的区别
    HashMap和Hashtable的区别
    & 和 && 的区别
    List集合复制
    Visual Studio 2015 Tools for Unity安装
    发布Android程序
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4867303.html
Copyright © 2011-2022 走看看