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);
}
}

最新文章

  1. [转]Json转换神器之Google Gson的使用
  2. Autolayout及VFL经验分享
  3. strerror
  4. fibonacci数列(二)_矩阵快速幂
  5. spring mvc为何多注入了个SimpleUrlHandlerMapping?
  6. InstallShield2008脚本安装制作方法Setup
  7. 入门VMware Workstation下的Debian学习之Vim简单使用(三)
  8. clang-format中文出错
  9. 浅析CompareAndSet(CAS)
  10. vue 动态样式
  11. docker swarm的常用操作
  12. 理解Python协程:从yield/send到yield from再到async/await
  13. 微信小程序web-view页面安卓下显示空白的解决办法!!!
  14. 添加浏览器back操作时的响应事件
  15. pygme 安装
  16. 内核态(Kernel Mode)与用户态(User Mode)
  17. CSS3 3D立方体翻转菜单实现教程
  18. VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  19. Windows系统下搭建Appium自动化测试框架
  20. Titanic幸存预测分析(Kaggle)

热门文章

  1. LOJ#2302. 「NOI2017」整数
  2. bq25896 IINDPM 及 無 IINDPM 時的 regsiter
  3. 微信JSSDK分享功能详解
  4. LeetCode OJ--Single Number
  5. jquery小技巧:使用jquery.confirm和PNotify实现弹出提示和消息提示
  6. Android---简单的动画
  7. [MFC]选择目录对话框和选择文件对话框 [转]
  8. Sublime Text 2搭建Go开发环境
  9. [LeetCode][Java] Unique Paths II
  10. 初涉IPC,了解AIDL的工作原理及用法