1 问题
当子类的成员变量或方法与父类同名时,可能模糊不清,应该怎么解决?如果子类重写了父类的某一个方法,我们又该怎么调用父类的方法?
2 方法
当父类和子类具有相同的数据成员时,可能会模糊不清。我们可以使用以下代码片段更清楚地理解它。
创建一个父类Person,并有属性年龄:
创建一个子类Student,具有和父类相同的属性:
测试类:
当父类和子类都具有相同的方法名时,可以使用 super 关键字访问父类的方法。
创建一个父类Person:
创建一个子类Student,具有和父类相同的方法:
测试类:
super调用成员属性:
Person类:
package boke.boke2;
public class Person {
int age = 12;
}
Student类:
package boke.boke2;
import boke.boke2.Person;
public class Student extends Person {
int age = 18;
void display() {
System.out.println("学生年龄:" + super.age);
}
}
测试类:
package boke.boke2;
public class test {
public static void main(String[] args) {
Student stu = new Student();
stu.display();
}
}
super调用成员方法:
Person类:
package boke.boke21;
public class Person {
void message() {
System.out.println("This is person class");
}
}
Student类:
package boke.boke21;
public class Student extends Person{
void message() {
System.out.println("This is student class");
}
void display() {
message();
super.message();
}
}
测试类:
package boke.boke21;
public class test {
public static void main(String args[]) {
Student s = new Student();
s.display();
}
}
3 结语
针对super访问父类成员问题,通过实验,当子类的成员变量或方法与父类同名时,可以使用 super 关键字来访问。如果子类重写了父类的某一个方法,即子类和父类有相同的方法定义,但是有不同的方法体,此时,我们可以通过 super 来调用父类里面的这个方法。在以前的学习中,不清楚super的用法,本次实验让我们深刻理解到super在访问父类成员属性以及方法时的作用。