在Java中,super是一個關(guān)鍵字,用于訪問父類中的屬性、方法或構(gòu)造函數(shù)。以下是關(guān)于super關(guān)鍵字的用法:
訪問父類中的屬性或方法: 使用super關(guān)鍵字可以訪問父類中被子類所隱藏的屬性或方法。例如,如果子類和父類中都有一個同名的屬性或方法,那么在子類中使用super關(guān)鍵字可以訪問父類中的屬性或方法。
例如,如果父類中有一個名為foo()的方法,子類也定義了一個名為foo()的方法,可以使用super.foo()來調(diào)用父類中的foo()方法。
在子類構(gòu)造函數(shù)中調(diào)用父類的構(gòu)造函數(shù): 子類構(gòu)造函數(shù)可以使用super關(guān)鍵字來調(diào)用父類的構(gòu)造函數(shù)。這通常在子類構(gòu)造函數(shù)需要初始化父類中的成員變量或執(zhí)行父類的一些操作時使用。
例如,如果父類中有一個帶參數(shù)的構(gòu)造函數(shù),子類構(gòu)造函數(shù)可以使用super關(guān)鍵字調(diào)用該構(gòu)造函數(shù),并傳遞相應(yīng)的參數(shù)。這樣可以確保父類中的成員變量得到正確的初始化。
下面是一個示例代碼,演示了如何使用super關(guān)鍵字:
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(); // 調(diào)用父類的構(gòu)造函數(shù)
System.out.println("Dog constructor called.");
}
public void makeSound() {
super.makeSound(); // 調(diào)用父類的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類的構(gòu)造函數(shù)使用了super關(guān)鍵字來調(diào)用Animal類的構(gòu)造函數(shù),而makeSound()方法中使用了super關(guān)鍵字來調(diào)用Animal類中的makeSound()方法。