super注意点:
1、super是调用父类的构造方法,而且必须在子类构造方法的第一个。
2、super必须出现在在子类的方法或构造方法中!
3、super和this不能同时调用构造方法。
super VS this
代表的对象不同
this:本身调用者这个对象
super:代表父类对象的应用
前期
this:在没有继承的前提下也能使用
super:只能在继承的条件下使用
构造方法
this():本类的构造
super():父类的构造
代码实例:
1、super是调用父类的构造方法,而且必须在子类构造方法的第一个。
public class Student extends Person {
public Student() {
//隐藏代码 默认调用父类无参构造(super)
super();
System.out.println("Student 无参执行了");
super();//此行会报错
//调用父类的构造器,必须在子类构造器的第一行
提示super();必须在构造器的第一行。
2、super必须出现在在子类的方法或构造方法中!
若在父类中使用super,则会调用到object类中。(在Java中所有的类,都默认直接或者间接继承object类)
3、super和this不能同时调用构造方法
提示this必须在构造器的第一行(super也必须在第一行,无法同时出现在构造方法中。)
super VS this
父类:
public void print(){
System.out.println("Person");
}
子类
public void print(){
System.out.println("Student");
}
子类中输出方法:
public void test1(){
print();
this.print();
super.print();
}
测试类:
public static void main(String[] args) {
Student student = new Student();
student.test1();
}
输出结果:
注意:
当父类的无参构造被重写为有参构造是,子类无法则无法调用父类无参构造,子类也无法写无参构造,此时子类只能直接调用父类的有参,需要显示调用父类的有参。
可以在子类中用super(“xxx”);显示调用父类的有参构造。