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:

javascriptclass User {
  setName(name) {
    this.name = name;
  }
  getName() {
    return this.name;
  }
}

Misalkan kita di kelas turunan mengoverride metode induk:

javascriptclass 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:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      super.setName(name); // metode induk
    } else {
      throw new Error('student name error');
    }
  }
}
Задание 1

Diberikan kode berikut:

javascriptclass 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.