Quick actions

cmd+k|ctrl+k

Navigation

Languages

Pewarisan / Inheritance

Snippet info

Language

JavaScript

Visibility

public

Author

ferdynand170

Created

2023-04-19T09:56:27.748854Z

Updated

2023-04-19T10:01:09.114839Z

//supperclass
class MailService {
    constructor(sender) {
        this.sender = sender;
    }
    
    //Method yang kemampuannya sama antara kedua subclass biar tidak terjadi duplikasi kode
    sendMessage(message, receiver) {
        console.log(`${this.sender} sent ${message} to ${receiver}`);
    }
}

//subclass
class WhatsAppService extends MailService {
    sendBroadcastMessage(message, receivers) {
        for (const receiver of receivers) {
            this.sendMessage(message, receiver);
        }
    }
}

//subclass
class EmailService extends MailService {
    sendDelayedMessage(message, receiver, delay) {
        setTimeout(() => {
            this.sendMessage(message, receiver);
        }, delay);
    }
}

//Lihatlah bahwa didalam subclass WhatsAppService dan EmailService kita tetap memiliki akses terhadap method dari superclass melalui keyword this
//karena subclass mewarisi sifat dari superclass 



//Pemanggilan 
const whatsapp = new WhatsAppService('+6281234567890'); //+6281234567890 sebagai sender
const email = new EmailService('[email protected]');

whatsapp.sendMessage('Hello', '+6289876543210');
whatsapp.sendBroadcastMessage('Hello', ['+6211111111', '+6233333333']); //dapat mengirimkan 1 pesan ke 2 orang secara bersamaan 
//whatsapp.sendDelayedMessage(); akan error

email.sendMessage('Hello', '[email protected]');
email.sendDelayedMessage('Hello', '[email protected]', 3000); //akan delay beberapa detik 
//email.sendBroadcastMessage(); akan error




INFO