/*
* 1.有子父类继承关系的类中,创建父类对象未调用,执行父类无参构造
* 2.有子父类继承关系的类中,创建子类对象未调用,执行顺序:默认先调用 父类无参构造---子类无参构造
* 在子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造
*
* * 为什么要调用父类构造?
* 因为需要给父类的成员变量初始化
* 肯定会先把父类的构造执行完毕,在去执行子类构造中的其他代码
* */ 1.创建子类对象,使用子类无参构造,子类无参构造第一行代码没有调用其他构造。
故输出顺序:
  父类无参构造---子类无参构造
public class ExtendsFunDemo {
public static void main(String[] args) {
// Dad6 d = new Dad6();
Kid6 k = new Kid6(); }
} class Dad6 {
public Dad6() {
System.out.println("父类无参构造");
} public Dad6(String name) {
System.out.println("父类有参构造");
}
} class Kid6 extends Dad6 {
public Kid6() {
System.out.println("子类无参构造");
} public Kid6(String name) {
System.out.println("子类有参构造");
}
}

执行结果

2.
* 1.子类构造方法第一行使用this调用该类的有参构造,所以执行顺序:
* (先执行无参中的this即(在执行this中的有参,有参第一行没有调用)父类无参--)子类有参--子类无参
* 2.同理,子类构造第一行使用super调用父类的有参构造,执行顺序:
* (先执行无参中的super即)父类有参---子类无参
public class ExtendsFunDemo2 {
public static void main(String[] args) {
Kid2 k = new Kid2();
}
} class Kid2 extends Dad6 {
public Kid2() {
this("小明");
// super("大明");
System.out.println("子类无参构造");
} public Kid2(String name) {
// super("大明");
System.out.println("子类有参构造");
}
}

输出

3.
* 创建子类对象,调用子类的有参构造方法
* 执行顺序:
* (子类构造方法第一行无调用)父类无参---子类有参
* 同理:
* 子类有参第一行调用子类无参(子类无参第一行未调用,先执行父类无参)
* 执行顺序:父类无参---子类无参--子类有参
public class ExtendsFunDemo3 {
public static void main(String[] args) {
Kid3 k = new Kid3("小明");
}
} class Dad3 {
public Dad3() {
System.out.println("父类无参");
} public Dad3(String name) {
System.out.println("父类有参");
}
} class Kid3 extends Dad3 {
public Kid3() {
// super("大明");
System.out.println("子类无参");
} public Kid3(String name) {
this();
System.out.println("子类有参");
}
}

输出


22.3 Extends 构造方法的执行顺序的更多相关文章

  1. Java Object 构造方法的执行顺序

    Java Object 构造方法的执行顺序 @author ixenos 为了使用类而做的准备工作包括三个步骤 1)加载:类加载器查找字节码(一般在classpath中找),从字节码创建一个Class ...

  2. java学习(一)静态代码块 构造代码块 构造方法的执行顺序及注意问题

    今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...

  3. Java(静态)变量、(静态)代码块、构造方法的执行顺序

    Java(静态)变量.(静态)代码块.构造方法的执行顺序 总结 1.父类静态变量和静态代码块(先声明的先执行); 2.子类静态变量和静态代码块(先声明的先执行); 3.父类的变量和代码块(先声明的先执 ...

  4. 静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了。

    1.静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了.1.静态代码块:是在类的加载过程的第三步初始化的时候进行的,主要目的是给类变量赋予初始值.2.构 ...

  5. 【Java基础】继承中的代码块和构造方法的执行顺序探索

    本文讲述有关一个类的静态代码块,构造代码块,构造方法的执行流程问题.首先来看一个例子 /** * Created by lili on 15/10/19. */ class Person{ stati ...

  6. java中静态代码块,构造代码块,以及构造方法的执行顺序

    写了许久的代码,却把一些基础的东西都给忘了,今天无聊就顺手写了个,然后测试下,发现跟我记忆中的竟然有些出入,作为一个两年的开发,我感觉自己很失败啊. 父类pojo: public class Pojo ...

  7. Java面试题 静态代码块 构造代码块 构造方法 的执行顺序

    JAVA中的静态代码块 构造代码块 构造方法执行顺序: 静态代码块(类加载时执行)>>构造代码块>>构造方法 下面展示一个简单的例子,推荐大家动手运行一遍: public cl ...

  8. 1.7Oob封装 继承 访问修饰符 静态和构造方法的执行顺序

    1:访问修饰符 private     同类中 默认        同类        同包 protect    同类         同包      子类 public     同类        ...

  9. Java子父类间静态代码块、非静态代码块、构造方法的执行顺序

    子类A继承父类B,A a=new A(); 正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A ...

随机推荐

  1. Jenkins下构建UI自动化之初体验

    一.缘 起 笔者之前一直在Windows环境下编写UI自动化测试脚本,近日在看<京东系统质量保障技术实战>一书中,萌生出在jenkins下构建UI自动化测试的想法 二.思 路 首先,在Li ...

  2. IntelliJ IDEA 2018.1.4 x64安装创建maven项目等

    Intellij IDEA 一:介绍 Jetbrains公司https://www.jetbrains.com/idea/ 1.1版本 Ultimate最终[收费] 网络,移动和企业开发 Web, m ...

  3. Andorid 添加MenuPopup

  4. java两数相乘基础算法

    下面是别人给我的代码: package com.bootdo; public class Test { public static void main(String[] args) { System. ...

  5. 1.如何运行一个Vue项目

    如何运行一个Vue项目 需要的环境: node.js环境(npm包管理器) vue-cli 脚手架构建工具 cnpm npm的淘宝镜像 1. 安装node.js 从node.js官网下载并安装node ...

  6. UNIX环境高级编程——TCP/IP网络编程 常用网络信息检索函数

    UNIX环境高级编程——TCP/IP网络编程   常用网络信息检索函数 gethostname()   getppername()   getsockname()   gethostbyname() ...

  7. TensorFlow系列专题(十一):RNN的应用及注意力模型

    磐创智能-专注机器学习深度学习的教程网站 http://panchuang.net/ 磐创AI-智能客服,聊天机器人,推荐系统 http://panchuangai.com/ 目录: 循环神经网络的应 ...

  8. SpringCloud微服务架构和SOA架构

    1,传统的三层架构 在传统的架构中,SSH,SSM,主要分为web 控制层,业务逻辑层,数据库访问层,单点项目,项目没有拆分,所有的开发任务全部写在一个项目中,耦合度比价高,如果程序中的一个功能出现了 ...

  9. mongodb的增加和删除

    一  mongodb中使用insert()方法来增加集合中的文档: db.myTable.insert({name:'arvin',age:12}) //对名为myTable的集合插入数据 插入数据 ...

  10. 怎么获取WebAPI项目中图片在服务端的路径

    1.这是我的项目结构. 2.路径格式为:[http://服务器域名/文件夹/文件.扩展名] 测试:假如我要获取到[logo_icon.jpg]这张图.在浏览器的地址栏中输入上面那个格式的路径. 3.可 ...