Süper anahtar kelime farklı durumlarda kullanılır. Bu gönderiye başlamadan önce, daha iyi bir anlayış için Java'da kalıtım hakkında bilgi edinmenizi öneririz.
Java'daki süper anahtar kelime nedir?
Super , üst sınıfın geçersiz kılınan yöntemlerini çağırmak ve üst sınıfın gizli alanlarına atıfta bulunmak için kullanılabilen bir anahtar kelimedir.Süper anahtar kelime neden ve ne zaman kullanılmalı?
Java süper anahtar sözcüğünün üç belirgin kullanımı vardır.- Alt sınıfın aynı ada sahip veri üyeleri de varsa, üst sınıfın veri üyelerine erişin .
- Alt sınıftaki üst sınıfın varsayılan veya parametreli oluşturucularını çağırın .
- Çocuğun geçersiz kılınan yöntemleri varsa, alt sınıftaki üst sınıf yöntemlerini çağırın .
Örnek 1 - Ebeveynin veri üyelerine erişin
Örnek 1, Araç sınıfının özniteliklerine veya veri üyelerine Araba tipi alt sınıfında nasıl erişilebileceğini göstermektedir . İyi anlamak için aşağıdaki pasajı çalıştırdığınızdan emin olun.
class Vehicle {
String name = "vehicle";
}
class Car extends Vehicle {
String name = "car";
public void printMyName() {
System.out.println(name);
}
public void printParentName() {
// use super keyword to access
// parent's data member / attribute
System.out.println(super.name);
}
public static void main(String[] args) {
Car myCar = new Car();
System.out.print("My Car's Name: ");
myCar.printMyName();
// printing the parent's name
// using the super keyword
System.out.print("My Parent Vehicle's Name: ");
myCar.printParentName();
}
}
Çıktı
Arabamın Adı: araba Ebeveynim Aracın Adı: araç
Örnek 2 - Alt sınıfta ebeveynin oluşturucularına erişin
Açıkça super() çağrısı , alt sınıftaki üst sınıfın hem varsayılan hem de parametreleştirilmiş yapıcısına erişmenizi sağlar. İşte parametreleştirilmiş yapıcıya bir örnek. Ana yani Shape sınıfının yapıcısı, öznitelikleri ayarlamak için alt yani Triangle sınıfında ( super() kullanılarak) çağrılır . Çıktıyı kendiniz test etmek için aşağıdaki programı çalıştırın.
public class Shape {
String name;
public Shape(String n) {
System.out.println("Shape() parameterized constructor called!");
name = n;
}
}
class Triangle extends Shape {
int sides = 3;
String color;
public Triangle(String n, String c) {
// The super keyword calls the parameterized
// constructor of the parent (Shape) with
// 'n' as a parameter
super(n);
System.out.println("Triangle() parameterized constructor called!");
this.color = c;
}
public static void main(String[] args) {
Triangle myTriangle = new Triangle("Triangle Alpha", "Yellow");
System.out.println(myTriangle.name);
System.out.println(myTriangle.color);
}
}
Çıktı
Shape() parametreli yapıcı çağrıldı! Triangle() parametreli yapıcı çağrıldı! Üçgen Alfa Sarı
Hızlı Görev : Öğrenmenizi test etmek için varsayılan kurucuyu kullanarak yukarıdaki programı yeniden tasarlayın. Ayrıca, super() öğesinin super(arg) öğesinden ne kadar farklı olduğunu görün .
Örnek 3 - Alt sınıfta ebeveynin geçersiz kılma yöntemine erişin
Örnek 3, alt sınıfın da tanımladığı ebeveyn sınıfının yöntemlerine nasıl erişebileceğinizi gösterir. Aşağıdaki programdaki Sound üst sınıfı, voice() yöntemini tanımlar . Drum alt sınıfının da aynı ada sahip bir yöntemi vardır, yani voice() . Bu, metot sesinin alt sınıf tarafından geçersiz kılındığı anlamına gelir. Alt sınıfta üst sınıfın yöntemlerini kullanmak için super anahtar sözcüğünün nasıl gerekli olduğunu öğrenmek için aşağıdaki programı çalıştırın .
public class Sound {
public void voice() {
System.out.println("Play sound!");
}
}
class Drum extends Sound {
public void voice() {
System.out.println("Play drums!");
}
public void play() {
// The super keyword calls the
// voice() method of the parent
super.voice();
voice();
}
public static void main(String[] args) {
Drum myDrum = new Drum();
myDrum.play();
}
}
Çıktı
Shape() parametreli yapıcı çağrıldı! Triangle() parametreli yapıcı çağrıldı! Üçgen Alfa Sarı
GO TO FULL VERSION