在Java中,super是一个关键字,用于访问父类中的属性、方法或构造函数。以下是关于super关键字的用法:
访问父类中的属性或方法: 使用super关键字可以访问父类中被子类所隐藏的属性或方法。例如,如果子类和父类中都有一个同名的属性或方法,那么在子类中使用super关键字可以访问父类中的属性或方法。
例如,如果父类中有一个名为foo()的方法,子类也定义了一个名为foo()的方法,可以使用super.foo()来调用父类中的foo()方法。
在子类构造函数中调用父类的构造函数: 子类构造函数可以使用super关键字来调用父类的构造函数。这通常在子类构造函数需要初始化父类中的成员变量或执行父类的一些操作时使用。
例如,如果父类中有一个带参数的构造函数,子类构造函数可以使用super关键字调用该构造函数,并传递相应的参数。这样可以确保父类中的成员变量得到正确的初始化。
下面是一个示例代码,演示了如何使用super关键字:
class Animal {
public Animal() {
System.out.println("Animal constructor called.");
}
public void makeSound() {
System.out.println("Animal is making a sound.");
}
}
class Dog extends Animal {
public Dog() {
super(); // 调用父类的构造函数
System.out.println("Dog constructor called.");
}
public void makeSound() {
super.makeSound(); // 调用父类的makeSound()方法
System.out.println("Dog is barking.");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound();
}
}
在上面的示例中,Dog类继承自Animal类。Dog类的构造函数使用了super关键字来调用Animal类的构造函数,而makeSound()方法中使用了super关键字来调用Animal类中的makeSound()方法。