点击查看视频教程
1、为什么除了Object类,所有类实例化都要调用父类构造函数?
因为除了Object类,每个类都有一个父类;
父类中的非静态成员变量的赋值操作,只能由父类的构造函数去完成;
所以子类的构造函数中,必须先调用父类构造函数,给父类的非静态成员变量显示赋值;
2、子类构造函数中,this() 和 super() 能否同时存在?
不能;
this()和super()都必须放在子类构造函数的第一行;
子类创建对象时,super()只需要执行一遍;
3、如果父类中没有无参构造函数,子类如何实例化?
两种办法:
1、在父类中添加一个无参构造函数;
2、在子类中手动调用父类有参构造函数
1.1. 总结:this与super调用普通成员与构造方法
l 调用普通成员:
this.成员变量 可以访问本类对象的成员变量
super.成员变量 可以访问父类对象的成员变量
this.成员方法() 可以访问本类对象的成员方法
super.成员方法() 可以访问父类对象的成员方法
l 调用构造方法:
this(其他参数) 可以访问本类其他的构造方法
super(其他参数) 可以访问父类其他的构造方法
l 默认子类调用父类构造方法
子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super();