CodeBlanks Logo Icon CodeBlanks

Özet - Miras

super ve override'ı birleştirerek bir şekil hiyerarşisi yazarsın.

Özet - Miras

Bu grupta extends ile mirası, super ile üst sınıf yapıcı çağrısını, @Override ile metot geçersiz kılmayı, Object sınıfını ve final anahtar kelimesini öğrendin. Miras, sınıflar arasında kod paylaşımı sağlar.

Şimdi tüm bunları bir araya getireceksin: bir üst sınıf tanımla, alt sınıf extends ile miras alsın, super ile yapıcıyı çağır, @Override ile metot geçersiz kıl. Bu, nesne yönelimli tasarımın temelidir.

Uygulama Bird sınıfını Animal'dan miras al

Animal adında bir sınıf tanımla; String name alanı ve Animal(String n) yapıcısı olsun, name = n; atansın. Bird extends Animal tanımla; Bird(String n) yapıcısı super(n) ile başlasın. @Override ile void sound() metodunu ekle, gövdede System.out.println(name + " ötüyor"); yaz. Bird içine main koy; bir Bird örneği oluştur ve sound metodunu çağır.

Başlangıç kodu

Main.java
// Animal sınıfını tanımla
// Bird extends Animal tanımla, yapıcı ve geçersiz kılma ekle
// main içinde örnekle ve çağır

Örnek çözüm

Main.java
class Animal {
    String name;
    Animal(String n) {
        name = n;
    }
    void sound() {
    }
}
class Bird extends Animal {
    Bird(String n) {
        super(n);
    }
    @Override
    void sound() {
        System.out.println(name + " ötüyor");
    }
    public static void main(String[] args) {
        Bird b = new Bird("Serçe");
        b.sound();
    }
}

Beklenen çıktı

Serçe ötüyor

Sırada ne var?

Mirası öğrendin. Sonraki gruplarda encapsulation ile alanları korumayı, static üyelerle sınıf düzeyinde veriyi ve interface ile sözleşme tanımlamayı göreceksin. Bunlar, sınıf tasarımının bir sonraki katmanıdır.

Bu grup; extends, super, @Override, Object ve final kavramlarını birleştirdi. Bunlar sınıf hiyerarşisinin temelidir. Bir sonraki adımda encapsulation ile alan erişimini denetim altına alacaksın; private alanlar ve getter/setter ile veriyi koruyacaksın.

Uygulama Vehicle sınıfını miras ile tanımla

Vehicle adında bir sınıf tanımla; String brand alanı ve Vehicle(String b) yapıcısı olsun, brand = b; atansın. Car extends Vehicle tanımla; Car(String b) yapıcısı super(b) ile başlasın. public String toString() metodunu Car'a ekle; brand döndürsün. Car içine main koy; bir Car örneği oluştur ve println ile yazdır.

Başlangıç kodu

Main.java
// Vehicle sınıfını tanımla
// Car extends Vehicle, super ve toString ekle
// main içinde örnekle ve yazdır

Örnek çözüm

Main.java
class Vehicle {
    String brand;
    Vehicle(String b) {
        brand = b;
    }
}
class Car extends Vehicle {
    Car(String b) {
        super(b);
    }
    public String toString() {
        return brand;
    }
    public static void main(String[] args) {
        Car c = new Car("Toyota");
        System.out.println(c);
    }
}

Beklenen çıktı

Toyota

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Alt sınıf yapıcısında super() nerede olmalıdır?

  • Ortada
  • İlk satırda Doğru cevap
  • Son satırda
  • Sınıf dışında

Açıklama: İlk satırda — super() ilk satırda olmalı.

2 Override annotation ekle

Soru
class Bird extends Animal {
    ____
    void fly() {
        System.out.println("Uçuyor");
    }
}
Cevap
class Bird extends Animal {
    @Override
    void fly() {
        System.out.println("Uçuyor");
    }
}

Açıklama: @Override ile metot geçersiz kılma belirtilir.

Orta seviye bölümündeki tüm dersler