Pārrakstītas metodes izsaukšana OOP JavaScript

Pārrakstot metodi, bērns zaudē piekļuvi pārrakstītajai vecāka metodei. Tomēr, piekļūt tai joprojām ir iespējams. To var izdarīt, izmantojot atslēgvārdu super, kas norāda uz vecāka klasi.

Apskatīsim piemēru, kad mums varētu būt nepieciešama piekļuve vecāka metodei. Pieņemsim, ka mums ir šāda vecāka klase:

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

Pieņemsim, ka mēs bērna klasē esam pārrakstījuši vecāka metodi:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      this.name = name;
    } else {
      throw new Error('student name error');
    }
  }
}

Var ievērot, ka pārrakstītajā metodē, ja nosacījums ir izpildīts, faktiski tiek izpildīts vecāka metodes kods. Rezultātā rodas nevēlams koda dublēšanās.

No tā var atbrīvoties, ja izsauc vecāka metodi. Darīsim tā:

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

Dots šāds kods:

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');
    }
  }
}

Klasē Employee izlabojiet vienkāršojiet vecuma setteri, izmantojot oriģinālo vecāka metodi.