Java super Anahtar Kelimesi: Miras Alınan Sınıfın Üyelerine Erişim

Posted by

Java programlama dilinde, super anahtar kelimesi, miras alınan sınıftaki üyelere (alanlar ve metotlar) alt sınıf içinden erişim sağlamak için kullanılan önemli bir yapıdır. Java’da kalıtım (inheritance) ile oluşturulan sınıflar arasında üst sınıftan alt sınıfa geçiş yapılabilmektedir. super anahtar kelimesi bu geçişi kolaylaştırarak üst sınıfta tanımlanan üyelere alt sınıftan erişim sağlamaktadır. Bu blog yazısında, Java’da super anahtar kelimesinin ne olduğunu, nasıl kullanıldığını ve farklı senaryolarda nasıl kullanılabileceğini örneklerle açıklayacağız.

java super kullanımı

Java super Anahtar Kelimesi Nedir?

Java super, alt sınıfın üst sınıfın üyelerine (alanlar ve metotlar) erişmesine izin veren bir anahtar kelime olarak kullanılmaktadır. Miras alınan sınıfın özelliklerini ve davranışlarını alt sınıfta tekrar tanımlamak yerine, super anahtar kelimesiyle bu özelliklere ve davranışlara direkt olarak erişim sağlanabilmektedir. Bu sayede, kod tekrarından kaçınılarak sınıflar arasında iyi bir yapı oluşturulabilmektedir.

super Anahtar Kelimesi ile Üst Sınıfın Metotlarına Erişim

super anahtar, alt sınıfta aynı isimde bir metot varsa bile, üst sınıfta bulunan metoda erişim sağlamak için kullanılmaktadır. Alt sınıfın metodu, super anahtar kelimesiyle üst sınıftaki metodu çağırabilir ve istenirse bu metodu ek işlemlerle genişletebilir.

Örnek Senaryo:

class UstSinif {
    void selamla() {
        System.out.println("Merhaba, Ben Üst Sınıf!");
    }
}

class AltSinif extends UstSinif {
    @Override
    void selamla() {
        super.selamla(); // Üst sınıftaki selamla() metodu çağırılır
        System.out.println("Alt Sınıf burada!"); // Ek işlem yapılır
    }
}

public class SuperAnahtarKelimesiKullanimi {
    public static void main(String[] args) {
        AltSinif altSinif = new AltSinif();
        altSinif.selamla();
    }
}

Çıktı;

Merhaba, Ben Üst Sınıf!
Alt Sınıf burada!

super Anahtar Kelimesi ile Üst Sınıfın Alanlarına Erişim

  1. super anahtar kelimesi aynı şekilde üst sınıfın alanlarına da erişim sağlar. Alt sınıf, üst sınıftaki alanı super anahtar kelimesi ile çağırabilir veya istenirse bu alanı değiştirebilir.

Örnek Senaryo:

class UstSinif {
    String ad = "Üst Sinif";
}

class AltSinif extends UstSinif {
    String ad = "Alt Sinif";

    void adiYazdir() {
        System.out.println(super.ad); // Üst sınıftaki ad alanı çağırılır
        System.out.println(this.ad);  // Alt sınıftaki ad alanı çağırılır
    }
}

public class SuperAnahtarKelimesiKullanimi {
    public static void main(String[] args) {
        AltSinif altSinif = new AltSinif();
        altSinif.adiYazdir();
    }
}

Çıktı;

Üst Sinif
Alt Sinif

super Anahtar Kelimesi ile Üst Sınıfın Constructor’larına Erişim

super anahtar kelimesi ile alt sınıfta bir constructor içinde üst sınıfın constructor’ları çağrılabilmektedir. Böylece, alt sınıf nesnesi oluşturulurken üst sınıfın constructor‘ları da çağrılacak ve alt sınıfın özel alanları başlatılabilir.

class UstSinif {
    String ad;

    UstSinif(String ad) {
        this.ad = ad;
    }

    void selamla() {
        System.out.println("Merhaba, Ben " + ad + "!");
    }
}

class AltSinif extends UstSinif {
    String soyad;

    AltSinif(String ad, String soyad) {
        super(ad); // Üst sınıfın constructor'ını çağırarak ad alanını başlatır
        this.soyad = soyad;
    }

    @Override
    void selamla() {
        super.selamla(); // Üst sınıfın selamla() metodu çağırılır
        System.out.println("Benim soyadım " + soyad + ".");
    }
}

public class SuperAnahtarKelimesiKullanimi {
    public static void main(String[] args) {
        AltSinif altSinif = new AltSinif("Ahmet", "Yılmaz");
        altSinif.selamla();
    }
}

Çıktı;

Merhaba, Ben Ahmet!
Benim soyadım Yılmaz.

super Anahtar Kelimesi ile Üst Sınıfın Constructor’ları Çağrısı İlk Satırda Olmalıdır

Bir constructor içinde super ile üst sınıfın constructor’ı çağrılacaksa, bu işlem constructor’un ilk satırında olmalıdır. Aksi takdirde, derleme hatası alınır.

Örnek Senaryo (Geçersiz Kullanım):

class UstSinif {
    UstSinif() {
        System.out.println("Üst sınıf constructor'ı");
    }
}

class AltSinif extends UstSinif {
    AltSinif() {
        // Geçersiz kullanım! super() ifadesi constructor'ın ilk satırında olmalıdır.
        System.out.println("Alt sınıf constructor'ı");
        super();
    }
}

public class SuperAnahtarKelimesiKullanimi {
    public static void main(String[] args) {
        AltSinif altSinif = new AltSinif();
    }
}

Java super Anahtar Kelimesi ve Çoklu Kalıtım

Java, çoklu kalıtıma izin vermez. Yani bir sınıf, birden fazla sınıftan miras alamaz. Ancak, super anahtar kelimesiyle alt sınıf, bir üst sınıf ve arayüz arasında bir ilişki kurabilmektedir. Bir sınıf, bir üst sınıfı miras alırken aynı zamanda birden fazla arayüzü de uygulayabilmektedir.

Örnek Senaryo:

interface Arayuz1 {
    void metot1();
}

interface Arayuz2 {
    void metot2();
}

class UstSinif {
    void metot() {
        System.out.println("Üst sınıf metodu");
    }
}

class AltSinif extends UstSinif implements Arayuz1, Arayuz2 {
    @Override
    void metot() {
        super.metot(); // Üst sınıfın metot() metodu çağrılır
        System.out.println("Alt sınıf metodu");
    }

    @Override
    public void metot1() {
        System.out.println("Arayüz1 metodu");
    }

    @Override
    public void metot2() {
        System.out.println("Arayüz2 metodu");
    }
}

public class SuperAnahtarKelimesiKullanimi {
    public static void main(String[] args) {
        AltSinif altSinif = new AltSinif();
        altSinif.metot(); // Alt sınıfın metot() metodu çağrılır
        altSinif.metot1(); // Arayüz1 metodu çağrılır
        altSinif.metot2(); // Arayüz2 metodu çağrılır
    }
}

Çıktı;

Üst sınıf metodu
Alt sınıf metodu
Arayüz1 metodu
Arayüz2 metodu

Bu yazıda, Java’da super anahtar kelimesinin nasıl kullanıldığını ve farklı senaryolarda nasıl kullanılabileceğini örneklerle açıkladık. Super anahtarı, miras alınan sınıfın üyelerine alt sınıf içinden erişim sağlamak için önemli bir yapıdır. Miras ve çoklu kalıtım kavramları, Java’da sınıflar arasındaki ilişkileri ve kod tekrarını önlemek için etkin bir şekilde kullanılabilmektedir. Programcılar, Java super anahtar kelimesini kullanarak sınıfları arasındaki ilişkileri doğru şekilde kullanmalıdır. Super, kalıtım yapısının anlaşılmasına ve kodun daha sade ve düzenli bir şekilde yazılmasına yardımcı olur.

Java super anahtar kelimesini kullanırken dikkat edilmesi gereken bazı önemli noktalar şunlardır:

  1. super anahtar kelimesi yalnızca alt sınıf içinde kullanılabilmektedir. Ve bu şekilde üst sınıfın üyelerine erişim sağlanır.
  2. super anahtar kelimesi ile üst sınıfın constructor’larına erişim sağlanırken, constructor’ın ilk satırında kullanılmalıdır.
  3. Alt sınıf, bir üst sınıftan miras alırken aynı zamanda birden fazla arayüzü de uygulayabilmektedir. Bu sayede çoklu kalıtımın benzer işlevleri sağlanabilmektedir.
  4. super anahtar kelimesi, alt sınıfın aynı isimli bir üst sınıf üyesini gizlemesini engellemek için kullanılabilmektedir. Böylece, üst sınıfın üyesine super ile erişim sağlanarak gizlenen üye kullanılabilir.
  5. super anahtar kelimesi, alt sınıfın üst sınıfın metotlarını veya alanlarını genişletmek için kullanılabilmektedir. Alt sınıfın kendi özel işlemleri yapılırken, super anahtar kelimesi ile üst sınıfın üyeleri de çağrılabilir ve özelleştirilebilir.

Sonuç olarak, super , Java’da miras alınan sınıflar arasında üyelere erişim sağlamak için önemli bir yapıdır. Alt sınıflar, super anahtar kelimesi sayesinde üst sınıfın özelliklerini kullanarak kod tekrarından kaçınabilmektedir. Özellikle daha esnek ve sade kod yazabilmektedir. Ancak, super anahtar kelimesi dikkatli bir şekilde kullanılmalıdır. Ayrıca java kodlarını denemek için jdoodle.com u kullanabilirsiniz.

Java Map Kullanımı ve Örnekleri için Tıklayınız.

İlginizi Çekebilir

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir