Memanggil Metode yang Dioverride dalam OOP di JavaScript
Saat melakukan override, turunan kehilangan
akses ke metode induk yang dioverride.
Namun, akses ke metode tersebut tetap bisa
didapatkan. Hal ini dilakukan
dengan kata kunci super,
yang merujuk ke kelas induk.
Mari kita lihat contoh kapan kita mungkin memerlukan akses ke metode induk. Misalkan kita memiliki kelas induk berikut:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Misalkan kita di kelas turunan mengoverride metode induk:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Dapat diperhatikan, bahwa dalam metode yang dioverride saat kondisi terpenuhi, pada dasarnya kode metode induk yang dijalankan. Terjadi duplikasi kode yang tidak perlu.
Kita dapat menghilangkannya dengan memanggil metode induk. Mari kita lakukan:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // metode induk
} else {
throw new Error('student name error');
}
}
}
Diberikan kode berikut:
class User {
setAge(age) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
}
}
class Employee {
setAge(age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
} else {
throw new Error('need age less 120');
}
}
}
Di kelas Employee, perbaiki
dan sederhanakan setter usia dengan menggunakan
metode asli induk.