📅  最后修改于: 2020-03-29 04:58:26             🧑  作者: Mango
Java中的super关键字是一个引用变量,用于引用父类对象。关键字“ super”以继承的概念出现。它主要用于以下情况:
1.将super与变量一起使用:当派生类和基类具有相同的数据成员时,会发生这种情况。在这种情况下,JVM可能存在歧义。使用以下代码片段,我们可以更清楚地理解它:
/* 父类 vehicle */
class Vehicle
{
int maxSpeed = 120;
}
/* 子类 Car extending vehicle */
class Car extends Vehicle
{
int maxSpeed = 180;
void display()
{
/* 打印父类的maxSpeed (vehicle) */
System.out.println("最大速度maxSpeed: " + super.maxSpeed);
}
}
/* 测试代码 */
class Test
{
public static void main(String[] args)
{
Car small = new Car();
small.display();
}
}
输出:
最大速度maxSpeed: 120
在上面的示例中,基类和子类均具有成员maxSpeed。我们可以使用super关键字在sublcass中访问基类的maxSpeed。
2.将super与方法配合使用:当我们要调用父类方法时使用。因此,只要父类和子类具有相同的命名方法,然后使用super关键字来解决歧义。此代码段有助于理解super关键字的上述用法。
/*父类 class Person */
class Person
{
void message()
{
System.out.println("父类");
}
}
/* 子类 Student */
class Student extends Person
{
void message()
{
System.out.println("子类");
}
// display()仅在子类中
void display()
{
// 仅调用当前类的message()方法
message();
// 会调用父类的message()
super.message();
}
}
/* 测试代码 */
class Test
{
public static void main(String args[])
{
Student s = new Student();
// 调用 =display(),来自Student类
s.display();
}
}
输出:
子类
父类
在上面的示例中,我们看到,如果仅调用方法message(),则将调用当前的类message(),但通过使用super关键字,也可以调用超类的message()。
3。将super与构造函数一起使用: super关键字也可以用于访问父类的构造函数。更重要的一点是,“ super”可以根据情况调用参数和非参数构造函数。以下是解释以上概念的代码段:
/* 父类 Person */
class Person
{
Person()
{
System.out.println("Person构造函数");
}
}
/* 子类Student extending Person */
class Student extends Person
{
Student()
{
// 调用父类构造函数
super();
System.out.println("Student构造函数");
}
}
/*测试代码*/
class Test
{
public static void main(String[] args)
{
Student s = new Student();
}
}
输出:
Person构造函数
Student构造函数
在上面的示例中,我们通过子类构造函数使用关键字“ super”调用了超类构造函数。
其他要点: