由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。
super 关键字的功能:
在子类的构造方法中显式的调用父类构造方法
访问父类的成员方法和变量。
super调用父类构造方法
super 关键字可以在子类的构造方法中显式地调用父类的构造方法:
1673602662693
super( ) 必须是在子类构造方法的方法体的第一行。
super访问父类成员
当子类的成员变量或方法与父类同名时,可以使用 super 关键字来访问。如果子类重写了父类的某一个方法,即子类和父类有相同的方法定义,但是有不同的方法体,此时,我们可以通过 super 来调用父类里面的这个方法。
使用 super 访问父类中的成员与 this 关键字的使用相似,只不过它引用的是子类的父类。
super访问父类方法的语法:
1673605972278
super调用成员属性
当父类和子类都具有相同的属性名时,可以使用 super 关键字访问父类的方法。
super.属性名
super调用成员方法
当父类和子类都具有相同的方法名时,可以使用 super 关键字访问父类的方法。
super.成员名
super和this的区别
this 指的是当前对象的引用,super 是当前对象的父对象的引用。
super 关键字的用法:
super.父类属性名:调用父类中的属性
super.父类方法名:调用父类中的方法
super():调用父类的无参构造方法
super(参数):调用父类的有参构造方法
如果构造方法的第一行代码不是 this() 和 super(),则系统会默认添加 super()。
this 关键字的用法:
this.属性名:表示当前对象的属性
this.方法名(参数):表示调用当前对象的方法
当局部变量和成员变量发生冲突时,使用 this.进行区分。
关于 Java super 和 this 关键字的异同,可简单总结为以下几条
子类和父类中变量或方法名称相同时,用 super 关键字来访问。可以理解为 super 是指向自己父类对象的一个指针。在子类中调用父类的构造方法。
this 是自身的一个对象,代表对象本身,可以理解为 this 是指向对象本身的一个指针。在同一个类中调用其它方法。
this 和 super 不能同时出现在一个构造方法里面,因为 this 必然会调用其它的构造方法,其它的构造方法中肯定会有 super 语句的存在,所以在同一个构造方法里面有相同的语句,就失去了语句的意义,编译器也不会通过。