1.super是调用父类的构造方法,必须在构造方法的第一个
2.必须只能出现在子类的方法或构造方法中
3.super和this不能同时调用构造方法
super 代表父类对象的引用,调用父类的构造,只能在继承条件下使用
this 代表本身调用者这个对象,调用本类的构造,没有继承也能使用
子类调用父类属性:
(左测试类 中子类 右父类)
这三种情况的name输出是不同的
第一个的name是左面main传递给它的参数,传递给它的名字垃圾
第二个this name是当前类的name 滑稽
第三个是super调用的父类的名字huaji
输出
子类调用父类方法:
(左测试类 中子类 右父类)
第一个print调用的当前类的方法
第二个this.print调用的也是当前类
第三个super调用的父类的方法
输出
如果将父类中public改为private,通过super无法调用了,私有的无法被继承
构造器也有隐藏代码:调用了父类的无参构造
输出
左面测试类只new一个学生对象,右面的子类父类分别执行无参构造
先执行了父类,然后执行了子类,默认调用了父类的无参构造
相当于有一个默认的super调用了父类,而且调用父类的构造器super();必须放在子类构造器的第一行
否则这样会报错,this调用也是一样的,要放在第一行,所以super this不能同时调用
如果有参构造调用要显示的表示出来调用,写了有参,无参构造就没了,就无法调用了,如果不写就默认调用无参。