Ç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"
Kopya kağıdı
Polimorfizm (çok biçimlilik), farklı sınıflara ait nesnelerin aynı metoda farklı şekillerde yanıt vermesine olanak tanır. JavaScript'te bu, genellikle alt sınıfların üst sınıflardan gelen metotları geçersiz kılmasıyla (override) elde edilir.
Metodu olan bir üst sınıf oluşturun:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound`;
}
}Alt sınıflar, üst sınıf metodunu kendi uygulamalarıyla geçersiz kılabilir:
class Dog extends Animal {
speak() {
return `${this.name} barks`;
}
}
class Cat extends Animal {
speak() {
return `${this.name} meows`;
}
}Her nesne aynı metoda farklı şekilde yanıt verir:
const animal = new Animal("Some animal");
const dog = new Dog("Rex");
const cat = new Cat("Whiskers");
console.log(animal.speak()); // Some animal makes a sound
console.log(dog.speak()); // Rex barks
console.log(cat.speak()); // Whiskers meowsKendin 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 Çekme9Statik 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