当创建任何java对象时,程序总会首先调用系统的父类非静态初始化块(隐式执行)和父类构造器(从object开始(java程序中所有类的最终父类都是java.lang.Object类,使用语句super(),也可以隐式),其次再调用子类的非静态初始化块和子类构造器,执行初始化,最后返回本类的实例。

例子:

class Creature

{

{

System.out.println("Creature 的非静态初始化块");

}

public Creature()

{

System.out.println("Creature 无参数的构造器");

}

public Creature(String name)

{

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 带1个参数的构造器,name参数:"+name);

}

public Animal(double weight)

{

this(name);

System.out.println("Animal 带2个参数的构造器,其age:"+age);

}

}

class Wolf extends Animal

{

{

System.out.println("Wolf 的非静态初始化块");

}

public Wolf(String name)

{

super(“灰太狼”,3);

System.out.println("Wolf无参数的构造器");

}

public Animal(String name,int age)

{

this();

System.out.println("Wolf的带weight参数的构造器,weight参数:+weight);

}

}

public class InitTest

{

public static void main(String [] args)

{

new wolf(5.6);

}

}

运行程序,输出:

Creature 的非静态初始化块

Creature 无参数的构造器

Creature 带有参数name的构造器,name参数:灰太狼

Animal 的非静态初始化块

Animal 带1个参数的构造器,name参数:灰太狼

Animal 带2个参数的构造器,其age:3

Wolf 的非静态初始化块

Wolf无参数的构造器

Wolf的带weight参数的构造器,weight参数:5.6

笔记:

1.子类构造器执行体的第一行代码使用super显示调用父类构造器,系统将根据super调用里传入的是实参列表来确定调用父类的哪个构造器;

2.子类构造器执行体的第一行代码使用this显示调用本类中重载的构造器,系统将根据this调用里传入的是实参列表来确定调用本类的另一个构造器(执行本类中另一个构造器时即进入第一种情况;

3.子类构造器中没有super()或this()调用时,系统将在调用子类构造器之前,调用父类无参数的构造器;

4.super用于调用父类的构造器;this用于调用本类中另一个重载的构造器;super和this都只能在构造器中使用;都只能作为构造器的第一行代码;

java 父类构造_java 父类构造器相关推荐

  1. java继承构造_Java语言的继承结构

    Java语言的继承结构 导语:Java语言找那个多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系,就是继承体系.下面是Java语言的继承结构,欢迎参考! (1)把很多类的相同特征和行为进行 ...

  2. java arraylist 构造_Java基础五:构造方法、ArrayList

    Java的构造方法 面向对象:属性和方法,当对象被创建的时候,构造方法用来初始化该对象,给对象的成员变量赋初始值 构造方法的格式: 修饰符 构造方法名(参数列表){方法体} 写法: 1.方法名与他所在 ...

  3. java 数组构造_java – 从数组构造(非二进制)树

    我需要用Java构建一个树.我已经完成了树作为数据结构.但是我在将数据从数组提供给树时遇到了一些问题.这是我需要做的. domain = {"b", "c"}; ...

  4. java 私有构造_JAVA中构造方法私有化的作用是什么?

    展开全部 如果构造方法是私有的,则意味着无法从除自身之62616964757a686964616fe58685e5aeb931333431363637外的任何类访问它.这是Java提供的访问控制机制. ...

  5. java类构造_Java中类的构造方法

    constructor:构造函数. 在创建对象的时候,对象成员可以由构造函数方法进行初始化. new对象时,都是用构造方法进行实例化的: 例如:Test test = new Test("a ...

  6. java date 构造_Java中Date的构造方法及大小比较

    原标题:Java中Date的构造方法及大小比较 Date类在jdk1.1中就已经出现,算得上一个比较有历史的类了,用来表示日期时间.在实际的工作中有时会涉及到对日期时间的一个比较,判断两个时间的先后顺 ...

  7. java 子类的同名方法_java 父类子类有同名方法时如何调用的实现

    父类引用默认调用子类重写的方法 如果父类的引用p指向了子类的实例,则通过这个引用p访问同名方法时,调用的是子类重写的方法. 父类引用p可以指向不同的子类,调用不同子类重写的不同的同名方法,进而达到类间 ...

  8. java 祖父类_JAVA的XX.put中的put方法,是在哪个父类或祖父类中,详述父类链。

    问题补充: hst.put中的put方法,是在哪个父类或祖父类中,详述父类链. 详细的程序是这样的 package chapter5; import java.util.*; public class ...

  9. JAVA子类作为实参父类作为形参_java 多态 实参形参

    多态: 概述: 多态是继 封装性,继承性,面向对象的第三大特性 定义: 多态:是指同一行为具有多个不同的表现形式. 生活中:比如跑的动作:猫,狗,大象,跑起来的动作都是不一样的 飞的动作:昆虫,鸟类, ...

最新文章

  1. 第四范式程晓澄:机器学习如何优化推荐系统
  2. 朝聚眼科完成4亿元B轮融资,兰馨亚洲和阳光融汇投资...
  3. python什么时候进入中国-Python什么时候开始流行的?还能流行多久?
  4. Py之albumentations:albumentations库函数的简介、安装、使用方法之详细攻略
  5. Codeforces 899D Shovel Sale
  6. MySQL工作笔记-检索出某一时间段中的数据,并更新
  7. python串口实时读取数据画图_python串口绘图
  8. 了解MyBatis框架
  9. [CTSC2008] 网络管理
  10. Linux命令大全(超详细版)
  11. 微信卡包系列-核销微信卡券优惠券
  12. 2021年Wordpress博客装修美化(二)
  13. 【C语言】详解qsort函数使用和模拟实现
  14. 基于三维卷积网络的时空特征学习
  15. css3扭蛋机,微信小程序 扭蛋抽奖机CSS3动画实现详解_咋地 _前端开发者
  16. MyBatis中的日志(LOG4J)
  17. 教大家如何用一行代码打造下载神器!下载全网视频、音频、图像!太牛了!
  18. 【抓包工具】配置:Fiddler 设置 APP 抓包成功,微信小程序却无网络问题解决
  19. 小程序创业,有哪些行业方向可以选?
  20. 超级服装分床省料软件

热门文章

  1. 交换机指示灯状态说明
  2. warning: ISO C forbids an empty translation unit [-pedantic]
  3. 曲子龙:相比其它诈骗,区块链ICO到底牛在哪?
  4. 后缀是lnk是什么文件_ink是什么文件?ink文件怎么打开
  5. 解析为何支付宝微信二维码合一
  6. 香橙派PC Plus电脑开发板制作网络打印服务器
  7. 神经网络的基本骨架-nn.Moudle的使用
  8. IDEA出现error moudle not specified
  9. 学习《图说设计模式》观察者模式
  10. 关于springboot微信点餐的错题集