在前面的博文中,已经讲解过this关键字,下面来讲解super关键字,两者的使用基本相同。
super基本具有三种用途:
1,调用父类的属性;
2,调用父类的普通方法;
3,调用父类的构造方法;
一,调用父类的属性
class Person{
String name = "李四";
int age;
}
class Student extends Person{
String name = "张三";
void print() {
//调用父类的属性
System.out.println("父类的属性:" + super.name);
//调用本类的属性
System.out.println("子类的属性:" + this.name);
}
}
public class Superkey{
public static void main(String[] args) {
new Student().print();
}
}
二,调用父类的普通方法
class Person{
public void print() {
System.out.println("父类的方法");
}
}
class Student extends Person{
public void print(){
//调用父类的普通方法
super.print();
System.out.println("子类的方法");
}
}
public class Superkey{
public static void main(String[] args) {
new Student().print();
}
}
三,调用父类的构造方法
class Person {
private String name;
private int age;
public Person(String name,int age){
this.setName(name);
this.setAge(age);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public String getInfo(){
return "姓名:" + this.name + "年龄:" + this.age;
}
}
class Student extends Person{
String school;
public Student(String name,int age,String school) {
super(name,age);
this.setSchool(school);
}
public void setSchool(String school) {
this.school = school;
}
public String getSchool() {
return school;
}
public String getInfo() {
return super.getInfo() + "学校:" + this.getSchool();
}
}
public class Superkey{
public static void main(String[] args) {
Student student = new Student("张三",30,"清华大学");
System.out.println(student.getInfo());
}
}
与this用法一样,super调用构造方法也必须放在子类构造方法的首行。
this与super的区别: