• 子父类中的构造函数


    首先了解构造函数

    构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。即为对象成员变量赋初始值。

    构造函数与类名相同,可重载多个不同的构造函数。如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造方法,这个构造方法不执行任何代码。

    构造函数的调用

    (1)子类只调用父类的默认(缺省)构造函数,即无形参构造函数。如果父类没有默认构造函数,那子类不能从父类调用默认构造函数。
    (2)子类从父类处调用父类默认构造函数,不能成为子类的默认构造函数。
    (3)在创建对象时,先调用父类默认构造函数对对象进行初始化,然后调用子类自身自己定义的构造函数。
    (4)如果子类想调用父类的非默认构造函数,则必须使用super来实现。
    (5)子类必须调用父类的构造函数。可以通过系统自动调用父类的默认构造函数,如果父类没有默认构造函数时,子类构造函数必须通过super调用父类的构造函数。
     
    java 构造函数的执行过程
    类初始化时构造函数调用顺序:
    (1)初始化对象的存储空间为零或null值;
    (2)调用父类构造函数;
    (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式
    class Dollar {
    Money m = new Money();
    Rmb r = new Rmb();
    public Dollar() {
    System.out.println("Dollar is constructor.");
    }
    public static void main(String[] args) {
    new Dollar();
    }
    }
    class Money {
    public Money() {
    System.out.println("Money is constructor.");
    }
    }
    class Rmb {
    public Rmb() {
    System.out.println("RMB is constructor.");
    }
    }
    输出结果:
    Money is constructor.
    RMB is constructor.
    Dollar is constructor.
     

    子父类中的构造函数的特点:

      在子类构造对象时,发现,访问子类构造函数时,父类也运行了。

    为什么会这样呢?

      原因是:在子类的构造函数中第一行有一个默认的隐式语句。super();

    子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。

    为什么子类实例化的时候要访问父类的构造函数呢?

      那是因为子类继承了父类,获取了父类中的内容(属性),所以在使用父类内容之前,首先要看父类如何对自己的内容进行初始化的。

      所以子类在构造对象时,必须访问父类中的构造函数。为了完成这个必须的动作就在子类的构造函数中加入了super语句。如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用哪个构造函数(通过super的参数)。

    注意:super语句必须要定义在子类构造函数的第一行,因为父类的初始化动作必须要先完成。

    通过super关键字初始化父类内容时,子类的成员变量并未显示初始化。等supe()父类初始化完毕后,才进行子类的成员变量显示初始化。

    一个对象的实例化过程:

      Person p = new Person ();

    1、JVM会读取指定的路径下的Person.class文件,并加载进内存,并会先加载Person的父类(如果有直接父类的情况下Object不算)

    2、在堆内存中开辟空间,分配地址

    3、并在对象空间中,对对象的属性进行默认初始化

    4、调用对应的构造函数进行初始化

    5、在构造函数中,第一行会先到父类中的构造函数进行初始化

    6、父类初始化完毕后,在对子类的属性进行显示初始化

    7、在进行子类构造函数的特定初始化

    8、初始化完毕后,将地址赋值给引用变量  

  • 相关阅读:
    联想笔记本如何开启笔记本的VT-x虚拟化技术功能
    《Python数据分析》环境搭建之安装Jupyter工具(一)
    SQLite文件查看工具DB Browser for SQLite
    《Python操作SQLite3数据库》快速上手教程
    市面上各类网盘(百度网盘、腾讯微云、亿方云、坚果云等)对比 2016年10月
    Selenium安装失败WebDriverException: Message: 'gechodriver' executable needs to be in PATH
    安装Python环境时遇到的问题
    ORA-12541:TNS没有监听器
    PL/SQL连接Oracle数据库,中文乱码,显示问号
    Selenium 简单的例子
  • 原文地址:https://www.cnblogs.com/beulas/p/7868570.html
Copyright © 2020-2023  润新知