java中,子类的构造器为啥要调用父类构造器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中,子类的构造器为啥要调用父类构造器?相关的知识,希望对你有一定的参考价值。
参考技术A 首先:继承是面向对象的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。通过构造器可以实现对类的实例化与初始化。
所以:要想吸收已有类的数据属性和行为,那么必须先调用父类的构造器,对父类进行实例化与初始化,这样才能实现继承,从而吸收已有类的数据属性和行为并且扩展新类的能力。
子类为啥要调用父类的构造函数
在Java中,子类的构造过程中,必须 调用其父类的构造函数, 所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况. 构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以 第一个规则:子类的构造过程中,必须 调用其父类的构造方法 一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法,所谓默认的构造方法,就是没有参数的构造方法,但是如果你自己写了构造方法,那么编译器就不会给你添加了 所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法,但是在子类构造方法中我们并没有显示的调用基类的构造方法,就是没写,如:super(); 并没有这样写,但是 第二个规则:如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构造方法 注意:如果子类的构造方法中既没有显示的调用基类构造方法,而基类中又没有默认无参的构造方法,则编译出错,所以,通常我们需要显示的:super(参数列表),来调用父类有参数的构造函数 参考技术A 第一个 子类要能访问父类继承过来的那一坨信息,必须有地方存储这一坨信息 java中的实现方式是在子类对象内部构建一个父类对象第二个 为了保证子类中的任何地方都能访问父类,默认会在子类构造器第一行调用父类构造器去构造父类对象 保证子类在自己的构造器中能访问继承的那坨信息 参考技术B 子类继承了父类,同样也继承了父类的成员变量。
所以系统需要先调用父类的构造方法,把父类里的东西创建好,再调用子类的。 参考技术C sun规定的,属于java的语法,没必要深究.话说回来有儿子必须得有父亲,一样个意思 参考技术D 创建对象?
以上是关于java中,子类的构造器为啥要调用父类构造器?的主要内容,如果未能解决你的问题,请参考以下文章
java中,当实例化子类时会递归调用父类中的构造方法。这个说法对么?为啥