Menu
Coddy logo textTech

Çok Biçimlilik Nedir?

Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 35 / 56.

Polimorfizm, farklı sınıflardaki nesnelerin aynı yönteme farklı şekillerde yanıt vermesini sağlayan nesne yönelimli programlamanın temel bir ilkesidir.

JavaScript'te çok biçimlilik en yaygın olarak alt sınıfların üst sınıflardaki yöntemleri geçersiz kılmasıyla görülür.

Basit bir üst sınıfı speak() metoduyla 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() yöntemini farklı şekilde uygular. İşte polimorfizm iş başında!

Artık farklı nesneler oluşturabilir ve her biri üzerinde aynı method'u çağırabiliriz:

const animal = new Animal("Some animal");
const dog = new Dog("Rex");
const cat = new Cat("Whiskers");

console.log(animal.speak()); // Some animal ses çıkarır
console.log(dog.speak());    // Rex havlar
console.log(cat.speak());    // Whiskers miyavlar

Her üç nesne de speak() yöntemine yanıt verir, ancak her biri bunu kendi tarzında yapar.

challenge icon

Görev

Notification adlı bir üst sınıfa ve iki alt sınıfa sahip bir bildirim sisteminiz var. Göreviniz, farklı uygulamalara sahip send(message) metodunu her alt sınıfa eklemektir.

  1. EmailNotification sınıfında metot şu dizeyi döndürmelidir: "Sending '(message)' via Email"
  2. SMSNotification sınıfında metot ş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ı
quiz iconKendini test et

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

Kendi başına pratik yap: Online JavaScript derleyicisi