父类构造器的隐式调用和显式调用
来源:互联网 发布:hf213网络上是什么意思 编辑:程序博客网 时间:2024/06/05 16:52
#当调用某个类的构造器来创建Java对象时,系统总是会先调用父类的非静态初始化块进行初始化。这个调用是隐式执行的,而且父类的静态初始化块总是会被执行。接着会调用父类的一个或多个构造器执行初始化,这个调用既可以通过super进行显式调用,也可以隐式调用。
当所有父类的非静态初始化块,构造器依次调用完成后,系统才调用本类的非静态初始化块,构造器执行初始化块,最后返回本类的实例。
如下例:
package com.construct;class Creature{{System.out.println("Creature的非静态初始化块");} //下面定义两个构造器public Creature() {System.out.println("Creature无参数的构造器");}public Creature(String name) {//使用this调用另一个重载的,无参数的构造器this();System.out.println("Creature带有name参数的构造器,name参数:"+name);}}class Animal extends Creature{{System.out.println("Animal的非静态初始化块");}public Animal(String name) { super(name); System.out.println("Animal 带一个参数的构造器,name参数: "+name);}public Animal(String name ,int age) {//使用this调用另一个重载的构造器this(name);System.out.println("Animal 带两个参数的构造器,其age: "+age);}}class Wolf extends Animal{{System.out.println("Wolf的非静态初始化块");}public Wolf() {//显示调用父类的带两个参数的构造器super("灰太狼",3);System.out.println("Wolf的无参数的构造器");}public Wolf(double weight) {//使用this调用另一个重载的构造器this();System.out.println("Wolf的带weight参数的构造器,weight参数: "+weight);// TODO Auto-generated constructor stub}}public class InitTest {public static void main(String[] args) {// TODO Auto-generated method stub new Wolf(6.6);}}
# 结果:
Creature的非静态初始化块
Creature无参数的构造器
Creature带有name参数的构造器,name参数:灰太狼
Animal的非静态初始化块
Animal 带一个参数的构造器,name参数: 灰太狼
Animal 带两个参数的构造器,其age: 3
Wolf的非静态初始化块
Wolf的无参数的构造器
Wolf的带weight参数的构造器,weight参数: 6.6
# 分析:
上述程序是按照如下步骤进行初始化的:
1.执行Object类的非静态初始化块(如果有的话)
2.隐式或显式调用Object类的一个或多个构造器执行初始化
3.执行Creature的非静态初始化块
4.隐式或显式调用Creature类的一个或多个构造器执行初始化
5.执行Animal的非静态初始化块
6.隐式或显式调用Animal类的一个或多个构造器执行初始化
7.执行Wolf的非静态初始化块
8.隐式或显式调用Wolf类的一个或多个构造器执行初始化
0 0
- 父类构造器的隐式调用和显式调用
- 父类构造器的隐式调用和显式调用
- Java 构造器之构造器的隐式调用和显式调用
- 基类和派生类的构造函数,隐式调用与显式调用
- 【牛客 题库】 求字符串长度和大小 || 基类和派生类的构造函数,隐式调用与显式调用 || 数组下标的数据类型
- 构造函数的显式调用
- *调用父类的构造器
- 调用父类的构造
- java继承之(隐式或显式)调用父类的构造函数
- 显式调用构造函数
- 显式调用构造函数
- 构造器的调用
- C#中调用父类的构造方法和成员
- 子类继承和调用父类的构造方法
- C#中调用父类的构造方法和成员
- C#中调用父类的构造方法和成员
- 子类继承和调用父类的构造方法
- 子类继承和调用父类的构造方法
- 尼古拉斯特斯拉
- java连接池详解(一)
- 处理程序“WebServiceHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- 素材类dedecms织梦模板免费下载
- 迭代器ListIterator使用及并发修改List集合
- 父类构造器的隐式调用和显式调用
- 前端编程规范
- 基于Scrapy和Lucene实现一个深圳大学校内搜索引擎
- 死锁
- ReentrantLock 深入理解
- C语言中的基本算法
- support中v4 v7库版本错误详解
- [bigdata-67] php7的试用安装和对curl的支持
- DAO