CodeBlanks Logo Icon CodeBlanks

Soyut referans

Soyut sınıf/interface referansıyla nesne kullanmayı öğrenirsin.

Soyut sınıf referansı

Bir abstract sınıf doğrudan örneklenemez; ama referans olarak kullanılabilir. Shape s = new Circle(); geçerliyse ve Shape soyutsa, bu en güçlü kullanımdır. Soyut sınıf bir sözleşme sunar; alt sınıflar somut davranışı sağlar.

Yeni bir alt sınıf eklemek üst sınıfı kullanan kodu değiştirmez. process(Shape s) metoduna Circle, Square ya da gelecekteki herhangi bir alt sınıf geçebilir; hepsi doğru area metodunu çağırır.

Interface ile polimorfizm

Bir interface de referans türü olabilir. Drawable d = new Circle(); geçerlidir; Circle Drawable arayüzünü uygular. Bu sayede sınıf hiyerarşisinden bağımsız olarak tür sözleşmesi kurulur.

Birden fazla interface'i implements A, B, C ile uygulayabilirsin; çoklu kalıtım sorununa Java'nın çözümü budur. Interface'lerde default metotlar gövde de içerebilir.

Uygulama Soyut Shape ve somut Circle

abstract class Shape tanımla; içinde abstract int area(); metodu olsun (gövdesiz). class Circle extends Shape tanımla; int r alanı, Circle(int r) yapıcısı ve override edilmiş area metodu return r * r * 3; döndürsün. main içinde Shape s = new Circle(3); ile ata ve System.out.println("Alan: " + s.area()); yazdır.

Başlangıç kodu

Main.java
// abstract Shape sınıfı: gövdesiz area metodu bildir

// Circle extends Shape; r alanı, yapıcı ve area metodu

// main: bir Circle örneğini Shape olarak ata ve yazdır

Örnek çözüm

Main.java
abstract class Shape {
    abstract int area();
}

class Circle extends Shape {
    int r;
    Circle(int r) { this.r = r; }
    int area() { return r * r * 3; }
}

public class Main {
    public static void main(String[] args) {
        Shape s = new Circle(3);
        System.out.println("Alan: " + s.area());
    }
}

Beklenen çıktı

Alan: 27

Soru ve cevaplar

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

1 Soyut ve somut kullanımları eşleştir

Kavram Anlamı
abstract class Örneklenemez, referans olur
new Circle() Somut örnek üretir
interface Sözleşme; çoklu kalıtıma izin verir
concrete class Doğrudan new ile oluşturulur

2 Hangisi abstract sınıf için doğrudur?

  • Doğrudan new ile oluşturulabilir
  • Yalnızca static metot içerebilir
  • interface ile yer değiştiremez
  • Örneklenemez ama referans türü olabilir Doğru cevap

Açıklama: Soyut sınıf örneklenemez; ama referans olarak kullanılabilir.

3 Interface uygulama anahtarını tamamla

Soru
class Circle extends Shape implements ____ {
    public void draw() { }
}
Cevap
class Circle extends Shape implements Drawable {
    public void draw() { }
}

Açıklama: Circle, Drawable arayüzünü uygular.

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