super (super Keyword)
کلمه کلیدی super یعنی اشاره به والد. وقتی نام ها یکی می شوند، super کمک می کند. بنابراین گیج نمی شویم و نسخه والد را صدا می زنیم. این کار برای متد، ویژگی و سازنده کاربرد دارد.
کاربرد کلمه super در جاوا
با super می توان متد والد را صدا زد. همچنین می توان ویژگیِ هم نامِ والد را خواند. و می توان سازنده والد را اجرا کرد.
دسترسی به متد والد با super
اگر فرزند و والد متد هم نام دارند، با super نسخه والد را اجرا کن.
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
public void animalSound() {
super.animalSound();
System.out.println("The dog says: bow wow");
}
}
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.animalSound();
}
}
نکته: وقتی متد را در فرزند بازنویسی می کنی، super نسخه والد را صدا می زند.
دسترسی به ویژگی والد با super
اگر ویژگی ها هم نام هستند، با super می توان مقدار والد را چاپ کرد.
class Animal {
String type = "Animal";
}
class Dog extends Animal {
String type = "Dog";
public void printType() {
System.out.println(super.type);
}
}
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.printType();
}
}
فراخوانی سازنده والد با super()
برای استفاده از آماده سازی والد، سازنده والد را با super() صدا بزن.
class Animal {
Animal() {
System.out.println("Animal is created");
}
}
class Dog extends Animal {
Dog() {
super();
System.out.println("Dog is created");
}
}
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
}
}
نکته: فراخوانی super() باید اولین دستور سازنده فرزند باشد.
گام های تمرین سریع
- یک والد بساز و متد ساده بنویس.
- یک فرزند با ارث بری ایجاد کن.
- متد را بازنویسی کن و سپس با super والد را صدا بزن.
برای رفتارهای متنوع، صفحه چندریختی را بخوان. همچنین لینک کلمه super همیشه این صفحه را نشان می دهد.
جمع بندی سریع
- super به والد اشاره می کند.
- متد والد را دوباره اجرا می کند.
- ویژگیِ هم نامِ والد را می خواند.
- سازنده والد را با super() صدا بزن.
- super() باید اول سازنده باشد.