Apa Itu Polimorfisme?
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan JavaScript di Coddy. Pelajaran 35 dari 56.
Polimorfisme adalah prinsip inti pemrograman berorientasi object yang memungkinkan object dari class berbeda merespons method yang sama dengan cara berbeda.
Dalam JavaScript, polimorfisme paling sering terlihat ketika class turunan mengganti method dari class induk.
Mari buat parent class sederhana dengan method speak():
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound`;
}
}Sekarang, mari buat class turunan yang memperluas Animal:
class Dog extends Animal {
speak() {
return `${this.name} barks`;
}
}Berikut class turunan lainnya:
class Cat extends Animal {
speak() {
return `${this.name} meows`;
}
}Setiap class turunan mengimplementasikan method speak() dengan cara berbeda. Inilah polimorfisme yang sedang bekerja!
Sekarang kita bisa membuat object yang berbeda dan memanggil method yang sama pada masing-masing object:
const animal = new Animal("Some animal");
const dog = new Dog("Rex");
const cat = new Cat("Whiskers");
console.log(animal.speak()); // Some animal mengeluarkan suara
console.log(dog.speak()); // Rex menggonggong
console.log(cat.speak()); // Whiskers mengeongKetiga object merespons method speak(), tetapi masing-masing melakukannya dengan caranya sendiri.
Tantangan
Kamu memiliki sistem notifikasi dengan class induk Notification dan dua class anak. Tugasmu adalah menambahkan method send(message) ke setiap class anak dengan implementasi yang berbeda.
- Di class
EmailNotification, method harus mengembalikan string: "Sending '(message)' via Email" - Di class
SMSNotification, method harus mengembalikan string: "Sending '(message)' via SMS"
Coba sendiri
import { EmailNotification } from './email-notification.js';
import { SMSNotification } from './sms-notification.js';
// Kode pengujian, jangan ubah
const email = new EmailNotification();
const sms = new SMSNotification();
console.log(email.send("Hello!")); // Harus menggunakan send() milik EmailNotification
console.log(sms.send("Hello!")); // Harus menggunakan send() milik SMSNotificationPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Object dan Kata Kunci this
Tinjauan Singkat: objectMenambahkan method ke objectMemahami Kata Kunci thisFungsi KonstruktorKata Kunci newTantangan Rangkuman7Pewarisan & Kata Kunci extends
PewarisanHubungan "is-a"Kata Kunci extendsmethod super()Mewarisi property & methodTantangan Rangkuman2Mengatur Kode
Apa itu module?Mengekspor dengan exportMengimpor dengan importEkspor default vs. ekspor bernama8Mengatur Kode OOP
Mengatur class ke dalam module11Proyek: Perender Bentuk
Penyiapan: class Shape & EksporPewarisan class CircleOverride & Method LuasPenghitung Shape Statis14Sistem Manajemen Perpustakaan
Merancang PerpustakaanClass Book dengan CompositionValidasi Penulis Buku9Method dan property Statis
Level class vs. level instanceProperty StatisMethod Utilitas StatisTantangan RangkumanLatihan sendiri: Compiler JavaScript online