java类的初始化过程
2024-08-29 00:15:34
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);
}
}
最新文章
- [转]Json转换神器之Google Gson的使用
- Autolayout及VFL经验分享
- strerror
- fibonacci数列(二)_矩阵快速幂
- spring mvc为何多注入了个SimpleUrlHandlerMapping?
- InstallShield2008脚本安装制作方法Setup
- 入门VMware Workstation下的Debian学习之Vim简单使用(三)
- clang-format中文出错
- 浅析CompareAndSet(CAS)
- vue 动态样式
- docker swarm的常用操作
- 理解Python协程:从yield/send到yield from再到async/await
- 微信小程序web-view页面安卓下显示空白的解决办法!!!
- 添加浏览器back操作时的响应事件
- pygme 安装
- 内核态(Kernel Mode)与用户态(User Mode)
- CSS3 3D立方体翻转菜单实现教程
- VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Windows系统下搭建Appium自动化测试框架
- Titanic幸存预测分析(Kaggle)
热门文章
- LOJ#2302. 「NOI2017」整数
- bq25896 IINDPM 及 無 IINDPM 時的 regsiter
- 微信JSSDK分享功能详解
- LeetCode OJ--Single Number
- jquery小技巧:使用jquery.confirm和PNotify实现弹出提示和消息提示
- Android---简单的动画
- [MFC]选择目录对话框和选择文件对话框 [转]
- Sublime Text 2搭建Go开发环境
- [LeetCode][Java] Unique Paths II
- 初涉IPC,了解AIDL的工作原理及用法