22.3 Extends 构造方法的执行顺序
/*
* 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 构造方法的执行顺序的更多相关文章
- Java Object 构造方法的执行顺序
Java Object 构造方法的执行顺序 @author ixenos 为了使用类而做的准备工作包括三个步骤 1)加载:类加载器查找字节码(一般在classpath中找),从字节码创建一个Class ...
- java学习(一)静态代码块 构造代码块 构造方法的执行顺序及注意问题
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...
- Java(静态)变量、(静态)代码块、构造方法的执行顺序
Java(静态)变量.(静态)代码块.构造方法的执行顺序 总结 1.父类静态变量和静态代码块(先声明的先执行); 2.子类静态变量和静态代码块(先声明的先执行); 3.父类的变量和代码块(先声明的先执 ...
- 静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了。
1.静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了.1.静态代码块:是在类的加载过程的第三步初始化的时候进行的,主要目的是给类变量赋予初始值.2.构 ...
- 【Java基础】继承中的代码块和构造方法的执行顺序探索
本文讲述有关一个类的静态代码块,构造代码块,构造方法的执行流程问题.首先来看一个例子 /** * Created by lili on 15/10/19. */ class Person{ stati ...
- java中静态代码块,构造代码块,以及构造方法的执行顺序
写了许久的代码,却把一些基础的东西都给忘了,今天无聊就顺手写了个,然后测试下,发现跟我记忆中的竟然有些出入,作为一个两年的开发,我感觉自己很失败啊. 父类pojo: public class Pojo ...
- Java面试题 静态代码块 构造代码块 构造方法 的执行顺序
JAVA中的静态代码块 构造代码块 构造方法执行顺序: 静态代码块(类加载时执行)>>构造代码块>>构造方法 下面展示一个简单的例子,推荐大家动手运行一遍: public cl ...
- 1.7Oob封装 继承 访问修饰符 静态和构造方法的执行顺序
1:访问修饰符 private 同类中 默认 同类 同包 protect 同类 同包 子类 public 同类 ...
- Java子父类间静态代码块、非静态代码块、构造方法的执行顺序
子类A继承父类B,A a=new A(); 正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A ...
随机推荐
- 今天建了一个Python学习交流的QQ群,求喜欢python的一起来交流。
版权归作者所有,任何形式转载请联系作者.作者:枫(来自豆瓣)来源:https://www.douban.com/note/666182545/ 现在学python的人越来越多了,我也开始学习了,大群里 ...
- 组件/ 外层数据初始化时候,不应该触发 on-change 事件
组件/ 外层数据初始化时候,不应该触发 on-change 事件 watch: { value (value) { this.noOnChange = true // 外层传值 不触发on-chang ...
- 一、create-react-app的安装及使用
一.安装create-react-app 1.在全局环境中安装create-react-app npm install -g create-react-app 2.在您所需要的目录(盘)下生成一个项目 ...
- MVC设计模式简介
刚刚学习了MVC相关知识,在这里进行一下总结MVC设计模式提高了Java开发中的代码可读性,提高了开发效率,实乃开发利器 1在MVC中由客户端发送一个带参数的请求,经过servlet处理后做出相应的处 ...
- C++之 ostream详细用法
前言 在 C++中,ostream表示输出流,英文”output stream“的简称.在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直接使用cout.那 ...
- postman使用简介
postman进行Http类型的接口测试的功能测试(手工测试): 1.postman下载,解压,打开Chrome浏览器-->设置-->扩展程序-->勾选开发者模式-->加载已解 ...
- vscode如何配置debug,python正则表达式如何匹配括号,关于python如何导入自定义模块
关于vscode如何配置debug的问题: 1.下载安装好python,并且配置好 环境变量 2.https://www.cnblogs.com/asce/p/11600904.html 3.严格按照 ...
- Java基础语法(7)-数组
title: Java基础语法(7)-数组 blog: CSDN data: Java学习路线及视频 1.数组的概述 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并 ...
- 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 反向传播算法(Backpropagation Algorithm, ...
- 使用wrd2vec构建推荐系统
概览 完整的代码可以从这里下载: https://github.com/prateekjoshi565/recommendation_system/blob/master/recommender_2. ...