網(wǎng)站排名優(yōu)化服務(wù)商全網(wǎng)營(yíng)銷平臺(tái)
在Java中,關(guān)鍵字"super"用于引用一個(gè)類的父類。它可以有以下幾種用法:
1. 訪問(wèn)父類成員:通過(guò)使用"super"后跟一個(gè)點(diǎn),你可以從子類中訪問(wèn)父類的成員(方法或字段)。當(dāng)子類重寫一個(gè)方法或隱藏一個(gè)字段時(shí),通過(guò)使用"super"可以引用父類的版本。
2. 調(diào)用父類構(gòu)造方法:在子類的構(gòu)造方法中,可以使用"super"關(guān)鍵字調(diào)用父類的構(gòu)造方法。這是為了使用父類構(gòu)造方法初始化子類繼承的成員。
以下是一個(gè)示例來(lái)說(shuō)明這些用法:
class Animal {protected String name;public Animal(String name) {this.name = name;}public void makeSound() {System.out.println("動(dòng)物正在發(fā)出聲音");}
}class Dog extends Animal {private String breed;public Dog(String name, String breed) {super(name); // 調(diào)用父類構(gòu)造方法this.breed = breed;}@Overridepublic void makeSound() {super.makeSound(); // 調(diào)用父類方法System.out.println("狗在叫");}public void display() {System.out.println("名字: " + super.name); // 訪問(wèn)父類字段System.out.println("品種: " + this.breed);}
}public class Main {public static void main(String[] args) {Dog dog = new Dog("巴迪", "拉布拉多");dog.makeSound();dog.display();}
}
輸出:
```
動(dòng)物正在發(fā)出聲音
狗在叫
名字: 巴迪
品種: 拉布拉多
```
在上面的示例中,類`Dog`繼承了類`Animal`,并重寫了`makeSound()`方法。在重寫的方法中,使用`super`關(guān)鍵字調(diào)用了父類的`makeSound()`方法。還使用`super`關(guān)鍵字從子類的`display()`方法中訪問(wèn)了父類的`name`字段。最后,`super`關(guān)鍵字被用來(lái)在子類構(gòu)造方法中調(diào)用父類的構(gòu)造方法。
訪問(wèn)父類方法:
class Animal {public void eat() {System.out.println("Animal is eating.");}
}class Dog extends Animal {@Overridepublic void eat() {super.eat(); // 調(diào)用父類的eat()方法System.out.println("Dog is eating.");}
}public class Main {public static void main(String[] args) {Dog dog = new Dog();dog.eat();}
}
輸出:
Animal is eating.
Dog is eating.
在上面的示例中,子類Dog
重寫了父類Animal
的eat()
方法,并使用super.eat()
調(diào)用了父類的eat()
方法,然后在子類中添加了額外的輸出。
調(diào)用父類構(gòu)造方法:
class Animal {private String name;public Animal(String name) {this.name = name;}public void display() {System.out.println("Name: " + name);}
}class Dog extends Animal {private String breed;public Dog(String name, String breed) {super(name); // 調(diào)用父類的構(gòu)造方法this.breed = breed;}public void display() {super.display(); // 調(diào)用父類的display()方法System.out.println("Breed: " + breed);}
}public class Main {public static void main(String[] args) {Dog dog = new Dog("Buddy", "Labrador");dog.display();}
}
輸出:
Name: Buddy
Breed: Labrador
在上面的示例中,子類Dog
有自己的構(gòu)造方法,并使用super(name)
調(diào)用了父類Animal
的構(gòu)造方法來(lái)初始化父類的實(shí)例變量。然后在子類的display()
方法中,使用super.display()
調(diào)用了父類的display()
方法,并在子類中添加了額外的輸出。
這些練習(xí)示例演示了super
關(guān)鍵字在訪問(wèn)父類方法和調(diào)用父類構(gòu)造方法時(shí)的用法。你可以根據(jù)這些示例進(jìn)行練習(xí)和進(jìn)一步嘗試。