java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料
保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。
package day09;
/**
* 在子类构造对象时,发现,访问子类构造函数时,父类也运行了。
* 为什么呢?
* 原因是:在子类的构造函数中第一行有一个默认的隐士语句。super()
* 子类的实例化过程:子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
*
* 为什么子类实例化的时候要访问父类中的构造函数呢?
* 那是因为子类继承了父类,获取到了父类中的内容(属性),所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的。
* 所以子类在构造对象时,必须访问父类中的构造函数。
* 为了完成这个必须的动作,就在子类的构造函数中加入了super(),语句。
* 如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用
* 父类中哪个构造函数.同时子类构造函数中如果使用this调用了本类构造函数时,那么super就没有了,因为super和this都只能定义在第一行,所以只能有一个。
* 但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。
*
* 注意:super语句必须要定义在子类构造函数的第一行,因为父类的初始化动作要先完成。
*/
class Fu{
Fu(){
System.out.println("fu run");
}
Fu(int x){
System.out.println("fu run..." + x);
}
}
class Zi extends Fu{
Zi(){
//super();调用的就是父类中的空参数的构造函数。
System.out.println("zi run");
}
Zi(int x){
this();
System.out.println("zi run" + x);
}
}
public class ExtendsDemo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Zi(6);
}
}
因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。
后续会有更多的精彩的内容分享给大家。
支付宝扫一扫
微信扫一扫
