[转载] java构造函数初始化与执行顺序问题
参考链接: Java构造函数
构造函数与类名
a. 类中的构造方法可以省略不写的
b. 构造方法必须跟类名相同,普通的类方法能与类同名的,但是要返回一个值。
c. 构造方法都在new 对象的时候调用的
d. 一个类可以定义多个构造方法的
构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。
1,父类无任何构造,子类无构,有参,无参,有两参四种情况都会初始化时或调用子类构造时自动调用父类的默认无参。然后执行子类构造。
2,父类定义了无参构造,子类无构,有参,无参,有两参四种情况都会初始化时或调用子类构造时首先调用父类的无参。当然可以在子类中super()来显示调用。然后执行子类构造。
3,父类定义了有参和无参,那么子类必须显示调用有参初始化父类变量,否则执行2.
4,父类只定义了有参,这是不会有默认无参,也没有无参,则必须显示调用有参初始化父类变量,否则执行2,报错。
静态变量静态块惊天方法,牢记初始化顺序(完全是这个)=》只初始化一次
虚拟机在首次加载Java类时,会对静态成员变量、静态初始化块、静态方法进行一次初始化。只执行一次,不随创建再执行。我们不要去纠结这里的顺序,一般来说我们只需要知道,静态方法一般在最后。
父类静态变量>父类B静态代码块->子类静态变量-》子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
静态初始化按声明顺序
[转载] java构造函数初始化与执行顺序问题相关推荐
- Java基础之代码执行顺序深入解析
Java基础之代码执行顺序深入解析 结合实例代码分析: public class demo6 {public static void main(String[] args) {new Son();Sy ...
- Java笔记——Java代码块的执行顺序
Java代码块的执行顺序 Java程序中代码块的执行顺序对于学习Java的人来说是必不可少需要掌握的. 代码块 在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为: 局 ...
- LeetCode1117. Building H2O --Java解法--多线程保证执行顺序--AtomicInteger
此文首发于我的个人博客:LeetCode 1117. Building H2O --Java解法–多线程保证执行顺序–AtomicInteger - zhang0peter的个人博客 LeetCode ...
- Static、构造代码块快、构造函数等的执行顺序
前言 今天分享的是关于在程序中代码的执行顺序,零零散散写了很多随记,总结起来蛮费时间的,希望大家给个关注,多多关注新人哈,废话不多说,还是老规矩,代码穿插注释的总结方式. 1.代码执行顺序 /*** ...
- java中this_夯实Java基础系列7:一文读懂Java 代码块和执行顺序
目录 #java中的构造方法 #构造方法简介 #构造方法实例 #例-1 #例-2 #java中的几种构造方法详解 #普通构造方法 #默认构造方法 #重载构造方法 #java子类构造方法调用父类构造方法 ...
- laravel构造函数和中间件执行顺序问题
今天想重构下代码结构: BaseController.php 放置公共的中间件 class BaseController { public function __construct(){ $this- ...
- java的for的执行顺序_对java for 循环执行顺序的详解
如下所示: for(表达式1;表达式2;表达式3) { //循环体 } 先执行"表达式1",再进行"表达式2"的判断,判断为真则执行 "循环体&quo ...
- 关于Java中try-catch-finally-return的执行顺序
1.try块中没有抛出异常,try.catch和finally块中都有return语句 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public static int ...
- java程序基础——SQL执行顺序
SQL执行顺序 1.from 2.join 3.on 4.where 5. group by(开始使用select中的别名,后面的语句中都可 以使用) 6.avg,sum.... 7.having 8 ...
最新文章
- HDLBits 系列(12)All about Karnaugh Map
- 反爬虫——使用chrome headless时一些需要注意的细节
- linux配置本地yum源 centos7.9为例
- BCVP开发者说第3期:Adnc
- 三、bootstrap4 组件(警告和提示框、徽章和面包屑、按钮按钮组、卡片、列表组、导航和选项卡、分页和进度条、巨幕和旋转图标、轮播图、折叠菜单、下拉菜单、导航条、滚动监听、轻量弹框、模态框、表单)
- html中可以自定义属性,,,妈的竟然才知道..
- ubuntu没有指纹登录_Thinkpad在Ubuntu 20.04下使用指纹登陆
- 矩池云上安装ikatago及链接教程
- Python实现代码行数统计工具
- thinkphp5 mysql加1_ThinkPHP5.1的数据库链接和增删改查
- 对于XP3系统不存在写保护功能的其他办法
- linux之U盘读写速度测试
- 24位掩码和30个掩码_高级ds位掩码和dp的问题
- python中path语句什么意思_pythonpythonpath是什么意思?
- 玄学:那些年我为之疯狂的超能力(有音频版)
- mysql常用函数整理
- 菜鸟的linux云服务器第一次木马入侵处理记录(名为xmrigMiner的木马)
- 词向量模型(word2vec) 详解
- ASP.NET Core 基础(九)——路由Routing
- python科学计算—— numpy
热门文章
- 云服务器升级系统,centos云服务器系统升级
- Potentiometers
- 前向声明 智能指针_C++ 指针类中实现 -gt;*
- FloydWarshall多(所有)源点的最短路径实现(带路径打印)
- 常见危险函数和特殊函数(二)----变量覆盖
- LuaForUnity7.1:Lua“类与对象”
- NYOJ 1272:表达式求值(2016河南省ACM-A)
- python机器学习案例系列教程——基于规则的分类器
- jQuery Mobile中按钮<a>或<button>添加class样式ui-btn-*
- AD19一键同时修改PCB各元器件黄色标志字符的尺寸(大了太占空间改小一点