1 问题
当子类的成员变量或方法与父类同名时,可能模糊不清,应该怎么解决?如果子类重写了父类的某一个方法,我们又该怎么调用父类的方法?
2 方法
super调用成员属性:
当父类和子类具有相同的数据成员时,可能会模糊不清。我们可以使用以下代码片段更清楚地理解它。
创建一个父类Person,并有属性年龄:
创建一个子类Student,具有和父类相同的属性:
测试类:
super调用成员方法:
当父类和子类都具有相同的方法名时,可以使用 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在访问父类成员属性以及方法时的作用。