Överskridande av föräldrametoder i OOP i JavaScript

En underklass kan åsidosätta en förälders metod genom att skapa en metod med samma namn. Låt oss titta på ett exempel. Låt oss säga att vi har följande förälderklass:

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

Låt oss i underklassen skapa en metod med samma namn:

javascriptclass Student extends User {
  setName(name) {
    
  }
}

Vanligtvis behövs åsidosättande av metoder från föräldern för att ändra eller komplettera beteendet hos denna metod. Låt oss i vårt fall lägga till en kontroll av namnets längd:

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

Låt oss försäkra oss om att det är just den åsidosatta metoden som anropas. Låt oss först skapa ett objekt av underklassen:

javascriptlet student = new Student;

Låt oss nu anropa vår metod, och skicka ett korrekt värde:

javascriptstudent.setName('john');

Låt oss nu anropa metoden och skicka ett ogiltigt värde. Som ett resultat kommer vi att se ett kastat fel i konsolen:

javascriptstudent.setName(''); // error
Задание 1

I klassen User, skapa en getter och setter för ålder.

Задание 2

I klassen Employee, åsidosätt ålderssettern och gör i den en kontroll att åldern är från 18 till 65 år.