super
含义:在子类中访问父类成员。
作用:
- 访问父类对象中的字段 及 普通方法
class User{//父类User
String name = "小花花";
void login(){
System.out.println("User login");
}
}
class StudentUser extends User{//子类 StudentUser
String name = "中花花";
void eat(String name){
System.out.println("super.name = "+super.name);//super访问父类字段
super.login();//super访问父类普通方法
System.out.println("name = "+name);
System.out.println("this.name = "+this.name);
}
}
-
在子类的构造方法体第一句访问父类的构造方法
super(); //调用父类无参的构造方法
super(123); //掉用父类中的一个有参构造方法
-
如果子类的构造方法,没有显示的写出对于父类构造方法的使用,那么子类构造方法的第一句默认调用父类的无参数构造方法;如果显示的写出了对于父类构造方法的调用,默认的调用就不存在了
class User{
User(){
System.out.println("隐式无参父类User");
}
User(String name){
System.out.println("显示有参式父类User");
}
}
class StudentUser extends User{
StudentUser(){
super("调用有参");//这里会调用父类中的有参构造方法
}
}
class Teacher extends User{
//这里会有隐式调用(super();)父类的无参构造方法
}
注意:1.无论如何,子类的构造方法一定会存在对于父类构造方法的调用
2.必须放在子类构造方法的第一句(所以也就不能够于this共存)
与this的区别:
- this指代的是当前对象,持有该对象的地址值
- super指代的是子类中的父类对象,不持有父类对象的地址值