Çok Biçimlilik Nedir?
Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 35 / 56.
Çok biçimlilik (Polymorphism), farklı sınıfların nesnelerinin aynı metoda farklı şekillerde yanıt vermesine olanak tanıyan, nesne yönelimli programlamanın temel bir ilkesidir.
JavaScript'te polimorfizm, en yaygın olarak alt sınıfların üst sınıflardan gelen metotları geçersiz kılmasıyla (override etmesiyle) görülür.
speak() metoduna sahip basit bir üst sınıf oluşturalım:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound`;
}
}Şimdi, Animal sınıfını genişleten bir alt sınıf oluşturalım:
class Dog extends Animal {
speak() {
return `${this.name} barks`;
}
}İşte başka bir alt sınıf:
class Cat extends Animal {
speak() {
return `${this.name} meows`;
}
}Her alt sınıf speak() metodunu farklı şekilde uygular. Bu, iş başındaki polimorfizmdir!
Artık farklı nesneler oluşturabilir ve her biri üzerinde aynı metodu çağırabiliriz:
const animal = new Animal("Some animal");
const dog = new Dog("Rex");
const cat = new Cat("Whiskers");
console.log(animal.speak()); // Some animal bir ses çıkarır
console.log(dog.speak()); // Rex havlar
console.log(cat.speak()); // Whiskers miyavlarHer üç nesne de speak() metoduna yanıt verir, ancak her biri bunu kendi yöntemiyle yapar.
Görev
Bir üst sınıf olan Notification ve iki alt sınıfa sahip bir bildirim sisteminiz var. Göreviniz, her bir alt sınıfa farklı uygulamalarla send(message) metodunu eklemektir.
EmailNotificationsınıfında, metod şu dizeyi döndürmelidir: "Sending '(message)' via Email"SMSNotificationsınıfında, metod şu dizeyi döndürmelidir: "Sending '(message)' via SMS"
Kendin dene
import { EmailNotification } from './email-notification.js';
import { SMSNotification } from './sms-notification.js';
// Test kodu - değiştirmeyin
const email = new EmailNotification();
const sms = new SMSNotification();
console.log(email.send("Hello!")); // EmailNotification'ın send() metodunu kullanmalı
console.log(sms.send("Hello!")); // SMSNotification'ın send() metodunu kullanmalıBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Nesneler ve this Anahtar Kelimesi
Hızlı Tekrar: NesnelerNesnelere Metot Eklemethis Anahtar Kelimesini AnlamakYapıcı Fonksiyonlarnew Anahtar KelimesiGenel Tekrar Uygulaması7Kalıtım ve extends Anahtar Kelimesi
Kalıtım"is-a" İlişkisiextends Anahtar Kelimesisuper() MetoduÖzellikleri ve Metotları DevralmaÖzet Meydan Okuması10Çok Biçimlilik
Çok Biçimlilik Nedir?Kalıtılan Metotları Geçersiz Kılmasuper KullanımıÖzet Meydan Okuması2Kodu Düzenleme
Modüller Nedir?export ile Dışa Aktarmaimport ile İçe AktarmaVarsayılan ve Adlandırılmış Dışa Aktarmalar8OOP Kodunu Düzenleme
Sınıfları Modüller Halinde Düzenleme6Proje: Basit Bir Banka Hesabı
BankAccount SınıfıPara Yatırma ve Para ÇekmePrivate Alan Olarak Bakiye9Statik Metotlar ve Özellikler
Sınıf Düzeyi ve Örnek DüzeyiStatik ÖzelliklerStatik Yardımcı MetotlarÖzet Meydan Okuma12Getter ve Setter'lar
get ve set Anahtar KelimeleriHesaplanmış ÖzelliklerDoğrulama ve Yan EtkilerÖzet Meydan Okuması15Final Meydan Okumaları
Oyun Karakteri OluşturucuE-ticaret Ürün SistemiÜniversite Yönetim SistemiAkıllı Ev Cihaz Sistemi