1 /*
2 * 子父类中的构造函数的特点。
3 * 在子类构造对象时,发现,访问子类构造函数时,父类也运行了。
4 * 为什么呢?
5 * 原因是:在子类的构造函数中第一行有一个默认的隐式语句。super()
6 * 子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
7 *
8 * 为什么子类实例化的时候要访问父类中的构造函数呢?
9 * 那是因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前要先看父类是如何对自己的内容进行初始化的。
10 *
11 * 所以子类在构造对象时,必须访问父类中的构造函数。
12 * 为了完成这个必须的动作,就在子类的构造函数中加入了super()语句。
13 *
14 * 如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确调用父类中的哪个构造函数。
15 * 同时子类构造函数中如果使用this调用了本类构造函数时,那么super就没有了,因为super和this都只能
16 * 定义第一行。所以只能有一个。
17 * 但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。
18 *
19 * *注意:super语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。
20 */
21 class Fu{
22 int num;
23 Fu(){
24 num = 10;
25 System.out.println("A fu run");
26 }
27 //Fu(int x){
28 // System.out.println("fu run");
29 //}
30 Fu(int x){
31 System.out.println("B fu run..."+x);
32 }
33 }
34 class Zi extends Fu {
35 int num;
36 Zi(){
37 //super();//调用的就是父类中的空参数的构造函数。
38 //super(4);
39 System.out.println("C zi fun"+super.num);
40 //return;
41 }
42 Zi(int x){
43 this();//可以调用本类的构造函数 上面的构造函数第一行还是super(); 至少会调用一次父类构造函数
44 //super(x);
45 System.out.println("D zi run"+x);
46 }
47 }
48 public class ExtendsDemo4 {
49 public static void main(String[] args) {
50 new Zi();
51 }
52 }
53
54 class Demo{ //创建的任何类 都属于 extends Object (无论直接间接)所以会存在super()语句
55 /* 类前加public 下面构造方法默认也变成public权限
56 Demo(){
57 super();
58 return;
59 }
60
61 */
62 }

java继承子父类构造函数-子类的实例化过程的更多相关文章

  1. Java继承--子父类中的构造函数

    子父类中的构造函数的特点: 1.在子类构造对象时,发现,访问子类构造函数时,父类构造函数也运行了.   原因是:在子类的构造函数中第一行有一个默认的隐式语句. super(); 类似于this(); ...

  2. Java继承中父类和子类构造函数的问题

    父类有无参构造函数时(显示或隐式),子类的有参和无参构造函数都是默认调用父类的无参构造函数:当父类只有有参构造函数时,子类可以有有参和无参构造函数,子类有参构造函数必须显式调用父类的有参构造函数,子类 ...

  3. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  4. Java继承--子类的实例化过程

    一个对象的实例化过程: Person p = new Person(); 1,JVM会读取指定的路径下的Person.class文件,并加载进内存,并会先加载Person的父类(如果有直接的父类的情况 ...

  5. java基础:父类与子类之间变量和方法的调用

    1)父类构造函数 java中当调用某个类的构造方法的时候,系统总会调用父类的非静态初始化块进行初始化,这个调用是隐式的,而且父类的静态初始化代码 块总是会被执行,接着调用父类的一个或者多个构造器执行初 ...

  6. JAVA继承中子父类的构造方法

    首先,构造方法本身会有一个隐式的无参构造(默认): ①不写构造方法,类中的第一行代码事实上有一个默认的无参构造(系统会隐式为你写好) public class Student { private St ...

  7. Java泛型 - 返回父类的子类

    一.栗子 public class GenericityInher { //error: Type mismatch: cannot convert from ArrayList<Child&g ...

  8. 【daily】Java泛型 - 返回父类的子类

    一.栗子 public class GenericityInher { //error: Type mismatch: cannot convert from ArrayList<Child&g ...

  9. Java静态函数、父类、子类执行顺序

    package class_test; /** * 静态函数.父类.子类执行顺序 * @author root * */ public class Test { public static void ...

随机推荐

  1. 【LeetCode】1041. Robot Bounded In Circle 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 找规律 日期 题目地址:https://leetco ...

  2. 【LeetCode】787. Cheapest Flights Within K Stops 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:DFS 方法二:BFS 参考资料 日期 题目 ...

  3. 【LeetCode】808. Soup Servings 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/soup-serv ...

  4. Java代码性能优化

    (1)在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 控制资源的使用,通过线程同步来控制资源的并 ...

  5. Dimension reduction in principal component analysis for trees

    目录 问题 重要的定义 距离 支撑树 交树 序 tree-line path 重要的性质 其它 Alfaro C A, Aydin B, Valencia C E, et al. Dimension ...

  6. uniapp中scroll-view自定义滚动条

    注意事项 需在app.vue中添加如下,需要important /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ ::-webkit-scrollbar { width: 16upx!imp ...

  7. 基于Spring MVC + Spring + MyBatis的【图书信息管理系统(二)】

    资源下载:https://download.csdn.net/download/weixin_44893902/35123371 练习点设计:添加.删除.修改 一.语言和环境 实现语言:JAVA语言. ...

  8. 编写Java程序,使用Swing布局管理器与常用控件,实现用户登录界面

    返回本章节 返回作业目录 需求说明: 使用Swing布局管理器与常用控件,实现用户登录界面 实现思路: 创建用户登录界面的类LoginFrame,在该类中创建无参数的构造方法,在构造方法中,设置窗体大 ...

  9. .net core的配置介绍(二):自定义配置(Zookeeper,数据库,Redis)

    上一篇介绍了.net core的配置原理已经系统提供的一些常用的配置,但有时我们的配置是存放在Zookeeper,DB,Redis中的,这就需要我们自己去实现集成了. 这里再介绍几个我们用的多的配置集 ...

  10. 双buffer实现无锁切换

    大家好,我是雨乐! 在我们的工作中,多线程编程是一件太稀松平常的事.在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者缓存内容不符合预期,重则会产生异常,导致进程崩溃.为了 ...