Özet - Polimorfizm
- Java kursu
- Orta seviye
- Ders 64/116
- 5 dk
Dinamik bağlama ve pattern matching'i birleştirerek bir şekil çizici yazarsın.
Özet - Polimorfizm
Bu grupta polimorfizmi öğrendin: üst sınıf referansı alt sınıf nesnesini tutar; metot çağrısı dinamik olarak bağlanır. override ile üst metodu değiştirirsin; @Override annotation'ı bunu derleme zamanında denetler.
Soyut sınıflar ve interface'ler sözleşme sunar; instanceof ve pattern matching ile tür denetimi yaparsın. Bu özette tüm bunları küçük bir görevde birleştireceğiz.
Uygulama Polimorfik kuş listesi
abstract class Bird tanımla; abstract String sound(); metodu olsun. class Sparrow extends Bird tanımla; @Override ile sound metodu "Cik" döndürsün. class Crow extends Bird tanımla; @Override ile sound metodu "Gak" döndürsün. main içinde List<Bird> birds = new ArrayList<>(); oluştur, new Sparrow() ve new Crow() ekle, for-each ile her birinin sound sonucunu ayrı satırda yazdır.
Başlangıç kodu
import java.util.List;
import java.util.ArrayList;
// abstract Bird: abstract String sound();
// Sparrow extends Bird; @Override sound = "Cik"
// Crow extends Bird; @Override sound = "Gak"
// main: birds listesi, iki kuş ekle, for-each ile yazdırÖrnek çözüm
abstract class Bird {
abstract String sound();
}
class Sparrow extends Bird {
@Override
String sound() { return "Cik"; }
}
class Crow extends Bird {
@Override
String sound() { return "Gak"; }
}
public class Main {
public static void main(String[] args) {
List<Bird> birds = new ArrayList<>();
birds.add(new Sparrow());
birds.add(new Crow());
for (Bird b : birds) {
System.out.println(b.sound());
}
}
}Beklenen çıktı
Cik Gak
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Polimorfizmin temel söz dizimi hangisidir?
- new Circle() = Shape s
- Shape s = new Circle(); Doğru cevap
- Circle extends Shape implements
- instanceof Circle s
Açıklama: Üst tür değişkeni alt tür nesnesini alır.
2 Override annotation'ını tamamla
class Sparrow extends Bird {
____
String sound() { return "Cik"; }
}
class Sparrow extends Bird {
@Override
String sound() { return "Cik"; }
}
Açıklama: @Override derleyici denetimini açar.
3 Polimorfizm özetini eşleştir
| Kavram | Anlamı |
|---|---|
virtual |
Varsayılan metot davranışı |
abstract |
Örneklenemez referans türü |
interface |
Çoklu kalıtım sözleşmesi |
instanceof |
Tür denetimi ve pattern matching |