super Anahtar Kelimesi
Coddy'nin Java Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 21 / 87.
super anahtar kelimesi, bir alt sınıfın kendi üst sınıfına referans vermesi için bir yol sağlar. Bir alt sınıfın içinden üst sınıf üyelerine veya yapıcılarına (constructors) erişmeniz gerektiğinde bu gereklidir.
super kullanımının en yaygın biçimi, üst sınıfın kurucusunu çağırmaktır. Bu, alt sınıf kurucusundaki ilk ifade olmalıdır:
public class Vehicle {
private String brand;
public Vehicle(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
}
public class Car extends Vehicle {
private int doors;
public Car(String brand, int doors) {
super(brand); // İlk satır olmalı
this.doors = doors;
}
}Üst sınıf metotlarını çağırmak için super anahtar kelimesini de kullanabilirsiniz; bu, özellikle alt sınıfın aynı ada sahip bir metodu olduğunda kullanışlıdır:
public class Animal {
public void makeSound() {
System.out.println("Some sound");
}
}
public class Cat extends Animal {
public void makeSound() {
super.makeSound(); // Animal versiyonunu çağırır
System.out.println("Meow!");
}
}super anahtar kelimesini this anahtar kelimesinin zıttı olarak düşünün. this mevcut nesneye atıfta bulunurken, super o nesnenin üst sınıf kısmına atıfta bulunur. Bu ayrım, alt sınıfların üst sınıf davranışını tamamen değiştirmek yerine genişletmesi gereken sınıf hiyerarşileri oluştururken kritik hale gelir.
Görev
KolayAlt sınıfların üst sınıf kurucularını çağırmak ve üst sınıf yöntemlerinin davranışını genişletmek için super kullanabildiğini gösteren bir cihaz sistemi oluşturalım.
Kodunu düzenlemek için üç dosya oluşturacaksın:
Appliance.java: Herhangi bir ev cihazını temsil eden üst sınıfı oluştur. Şunlara sahip olmalı:- Cihazın
branddeğerini tutan özel bir alan (String) wattagedeğerini tutan özel bir alan (int)- Her iki değeri kabul eden ve bunları başlatan bir kurucu
- Markayı döndüren bir
getBrand()yöntemi - Watt değerini döndüren bir
getWattage()yöntemi - Şunu döndüren bir
getInfo()yöntemi:[brand] - [wattage]W
- Cihazın
WashingMachine.java: Appliance sınıfını genişleten bir alt sınıf oluştur. Çamaşır makinesi, bir cihazın sahip olduğu her şeye ek olarak kendine özgü özelliklere sahiptir:- Kg cinsinden yük kapasitesini temsil eden
capacityalanı (int) - Marka, watt ve kapasite değerlerini alan bir kurucu — üst sınıf kısmını başlatmak için
super(brand, wattage)kullan, ardından kapasiteyi ayarla - Kapasiteyi döndüren bir
getCapacity()yöntemi - Üst sınıfın
getInfo()yönteminisuper.getInfo()kullanarak çağıran ve şu değeri döndürecek şekilde genişleten birgetInfo()yöntemi:[parent info], Capacity: [capacity]kg
- Kg cinsinden yük kapasitesini temsil eden
Main.java: Bir WashingMachine oluştur ve tüm bilgilerini görüntüle. Üç girdi alacaksın: marka (String), watt (int) ve kapasite (int). Çamaşır makinen üzerindegetInfo()çağrısının sonucunu yazdır.
Üç girdi alacaksın: marka adı, watt ve kapasite.
Burada super ifadesinin iki amaca hizmet ettiğine dikkat et: kalıtsal alanları başlatmak için üst sınıf kurucusunu çağırmak ve davranışını tamamen değiştirmek yerine üzerine ekleme yapmak için üst sınıfın yöntemini çağırmak.
Kendin dene
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Girdileri oku
String brand = scanner.nextLine();
int wattage = scanner.nextInt();
int capacity = scanner.nextInt();
// TODO: Girdi değerleri ile bir WashingMachine nesnesi oluşturun
// TODO: Çamaşır makinesi üzerinde getInfo() metodunu çağırmanın sonucunu yazdırın
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarAlanlar (Öznitelikler)Yapıcı MetotYapıcı Metot Aşırı YüklemeÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (extends)super Anahtar KelimesiMetot Geçersiz Kılma (@Override)Yapıcı Metot ZincirlemeObject SınıfıTekli ve Çok Seviyeli KalıtımNeden Çoklu Sınıf Kalıtımı Yok?Özet - Çalışan Hiyerarşisi7Özel Metotlar ve Object Sınıfı
toString() Metoduequals() ve hashCode()clone() MetoducompareTo() ve ComparableComparator ArayüzüÖzet - Özel Sıralama2Erişim Belirleyiciler ve Kapsülleme
Erişim Seviyelerine Genel BakışGetter ve Setter MetotlarıBilgi Gizlemefinal Anahtar KelimesiÖzet - Banka Hesabı Yöneticisi5Polimorfizm
Metot Aşırı Yükleme TemelleriMetot Geçersiz Kılma (Çalışma Zamanı)Upcasting ve Downcastinginstanceof OperatörüSoyut Sınıflar ve MetotlarÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımAgregasyon vs KompozisyonDahili, Yuvalanmış ve Anonim SınıflarEnum'lar ve Enum MetotlarıRecords (Java 16+)Sealed Classes (Java 17+)11Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıBuilder KalıbıObserver KalıbıStrategy Kalıbı14Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi3Sınıf Özellikleri ve Statik Üyeler
Instance ve Statik DeğişkenlerStatik MetotlarStatik BloklarSabitler (static final)Özet - Sayaç ve Utility6Arayüzler ve Soyut Sınıflar
Arayüzlere GirişArayüzleri UygulamaÇoklu Arayüz UygulamaArayüzlerde Default ve StaticSoyut Sınıflar ve ArayüzlerFonksiyonel ArayüzlerÖzet - Ödeme Sistemi9Generics
Generics'e GirişGeneric SınıflarGeneric MetotlarSınırlandırılmış Tip ParametreleriWildcard'lar (?, extends, super)Özet - Generic Container12Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıYineleyici KalıbıKendi başına pratik yap: Online Java derleyicisi