Soyut referans
- Java kursu
- Orta seviye
- Ders 62/116
- 5 dk
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
// 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
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
class Circle extends Shape implements ____ {
public void draw() { }
}
class Circle extends Shape implements Drawable {
public void draw() { }
}
Açıklama: Circle, Drawable arayüzünü uygular.