Dart dilinde polimorfizm, sınıf hiyerarşisini ve kalıtımı kullanarak farklı sınıfların aynı isimdeki metotları farklı şekillerde uygulayabilmesini ifade eder. Polimorfizm, Dart dilinde iki şekilde gerçekleştirilir: dinamik bağlama (dynamic binding) ve soyut sınıflar ve arayüzler (abstract classes and interfaces) kullanarak.
Dinamik Bağlama (Dynamic Binding): Dinamik bağlama, çalışma zamanında doğru metotun hangi sınıfa ait olduğunu belirlemek için kullanılır. Bu, aynı isimdeki metotların alt sınıflar tarafından farklı şekillerde uygulanmasına olanak tanır.
class Sekil {
void alanHesapla() {
print(‘Alan hesaplanamadı’);
}
}
class Dikdortgen extends Sekil {
int en;
int boy;
Dikdortgen(this.en, this.boy);
void alanHesapla() {
int alan = en * boy;
print(‘Dikdörtgenin alanı: $alan’);
}
}
class Kare extends Sekil {
int kenar;
Kare(this.kenar);
void alanHesapla() {
int alan = kenar * kenar;
print(‘Karenin alanı: $alan’);
}
}
void main() {
List
for (var sekil in sekiller) {
sekil.alanHesapla(); // Polimorfizm: Her sınıfın kendi alanHesapla() implementasyonunu çağırır
}
}
Yukarıdaki örnekte, Sekil adında bir üst sınıf ve Dikdortgen ile Kare adında iki alt sınıf tanımlanmıştır. Her iki alt sınıf da alanHesapla() metotunu farklı şekilde uygular. Main fonksiyonunda, Sekil tipindeki bir liste oluşturulur ve bu listedeki her bir öğe için alanHesapla() metodu çağrılır. Çalışma zamanında hangi sınıfın alanHesapla() metodu çağrılacaksa, o sınıfa ait implementasyon çalıştırılır.
- Soyut Sınıflar ve Arayüzler (Abstract Classes and Interfaces): Dart dilinde soyut sınıflar (abstract classes) ve arayüzler (interfaces) kullanarak da polimorfizm sağlanabilir. Soyut sınıflar, hiyerarşide belirli metotları veya özellikleri tanımlayan ancak doğrudan örneklendirilemeyen sınıflardır. Arayüzler ise sınıflara belirli metotları uygulama zorunluluğu getiren yapıdır.
abstract class Hayvan {
void beslen();
}
class Kedi implements Hayvan {
void beslen() {
print(‘Kedi beslendi’);
}
}
class Kopek implements Hayvan {
void beslen() {
Bu Yazıya Tepkin Ne Oldu ?
YORUMLAR