zoukankan      html  css  js  c++  java
  • java类的初始化过程

    1 先初始化父类的静态成员和静态块,然后初始化子类的静态成员和静态块,然后再初始化父类,然后再初始化子类。

    2 先初始化父类

    3 单个类初始化的顺序

    先初始化成员变量和代码块,后调用构造函数

    4 如果父类的构造函数中调用了被子类重写了的方法的话,在创建子类对象的时候,会调用子类中重写的方法

    这个时候会出现的问题是,子类的成员还没有初始化,调用子类的方法返回的值并不是预想的结果。

    至于为什么这样,是因为java编译器编译的时候,父类的构造函数调用被子类重写的方法时使用的是this指针,而不是super指针,this指针是指向子类对象的。

    下面的例子会输出null

    package com.gxlee;
    
    public class Base {
        private String baseName=  "base";
        public Base() {
            callName();
        }
        public void callName(){
            System.out.println(baseName);
        }
        
        static class Sub extends Base{
            private String baseName = "sub";
            public void callName(){
                System.out.println(baseName);
            }
        }
        public static void main(String[] args) {
            Base b = new Sub();
            System.out.println(b);
        }
    }
  • 相关阅读:
    es6简述
    vue梳理
    webpack常用插件
    JS知识点
    CSS知识点
    224646
    223301
    图书馆 摘 1
    消息队列高手课 笔记6
    消息队列高手课 笔记5
  • 原文地址:https://www.cnblogs.com/hustdc/p/8894005.html
Copyright © 2011-2022 走看看