Java面向对象-super详解
super注意点
- super()调用父类的构造方法,必须在子类的构造方法中的第一个
- super只能出现再子类的方法和构造方法中
- super和this不能同时调用构造方法
super与this的区别
- 代表的对象不同
this:本身调用者这个对象
super:代表父类对象的引用 - 前提
this:没有继承也可以使用
super:只能在继承条件下才可以使用 - 构造方法:
this():本类的构造
super():父类的构造
如图,Student类继承Person类,父类和子类中都有一个相同的属性:name;当我们调用子类的test方法时,结果如下:
秦疆 —>是实参传递给方法的数据
qinjiang ---->this.name:指向本类中的name
kuangshen ----->super.name:指向父类的name
当然,除了属性,我们方法也可以这么使用
super在构造器的作用
如图:我们都知道在使用new关键字时,本质是使用它的无参构造器,但是代码中显示只调用了Student子类的构造器,为什么父类的也会出来?
这是因为子类构造方法中隐藏了代码,它的完整代码应该是这样:
public Student(){
super();//这是被隐藏的,它代指父类
System.out.println("Student构造器");
}
super()代指父类构造方法,但是当你显示的调用super()方法时,super方法必须要在子类构造方法中的第一行,不然就会报错: