zoukankan      html  css  js  c++  java
  • 综合: Java 对象初始化过程

    class Fu
    {
        Fu()
        {
            show();
        }
        void show()
        {
            System.out.println("xixi");
        }
    }
    
    class Zi extends Fu
    {
        int num = 9;
    
        // 构造代码块
        {
            System.out.println("constructor code..." + num);
            num = 10;
        }
    
        // 构造函数
        Zi()
        {
            super();
            // 显示初始化
            // 构造代码块初始化
            System.out.println("zi constructor..." + num);
        }
    
        void show()
        {
            System.out.println("show..." + num);
        }
    }
    
    class Test
    {
        public static void main(String[] args)
        {
            new Zi();
        }
    }
    
    // 输出结果:
    // show...0
    // constructor code...9
    // zi constructor...10
    

    流程如下图所示:

    // 示例二:
    class A {
    
        static {
            System.out.print("1");
        }
    
        public A() {
            System.out.print("2");
        }
    }
    
    class B extends A{
    
        static {
            System.out.print("a");
        }
    
        public B() {
            System.out.print("b");
        }
    }
    
    public class Hello {
    
        public static void main(String[] args) {
            A ab = new B();
            ab = new B();
        }
    
    }
    
    // 执行结果: 1a2b2b
    // 创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。
    


    _参考资料_ - [JavaSE 基础视频](https://www.bilibili.com/video/av3096713/index_16.html#page=18) - [Java 面试题](http://blog.csdn.net/jackfrued/article/details/44921941)
  • 相关阅读:
    信息安全算法
    另类装载问题
    分治法快速排序
    动态规划最长公共子序列
    java网络编程1
    Jndi和会话bean
    EJB初探
    JSF初探
    简单计算器
    关于坐火车
  • 原文地址:https://www.cnblogs.com/linkworld/p/7445704.html
Copyright © 2011-2022 走看看