Инheritance в JavaScript

Наследование класса

Чтобы создать наследование класса, используйте: extends Ключевые слова.

Класс, созданный с помощью наследования, наследует все методы другого класса:

Экземпляр

Создайте класс с именем "Model", который будет наследовать методы класса "Car":

class Car {
  constructor(brand) {
    this.carname = brand;
  }
  present() {
    return 'У меня есть ' + this.carname;
  }
}
class Model extends Car {}}
  constructor(brand, mod) {
    super(brand);
    this.model = mod;
  }
  show() {
    return this.present() + ', it is a ' + this.model;
  }
}
let myCar = new Model("Ford", "Mustang");
document.getElementById("demo").innerHTML = myCar.show();

Попробуйте сами

super() метода мы ссылаемся на родительский класс.

Через вызов super() Методы, мы вызываем метод constructor родительского класса, чтобы получить доступ к свойствам и методам родительского класса.

Инheritance полезна для повторного использования кода: при создании нового класса повторно используйте свойства и методы существующего класса.

Getter и Setter

Класс также позволяет использовать getter и setter.

Использование getter и setter для вашего свойства умно, особенно если вы хотите сделать что-то особенное перед тем, как вернуть их или установить их.

Если нужно добавить getter и setter в класс, используйте get и set Ключевые слова.

Экземпляр

Создайте getter и setter для свойства "carname":

class Car {
  constructor(brand) {
    this.carname = brand;
  }
  get cnam() {
    return this.carname;
  }
  set cnam(x) {
    this.carname = x;
  }
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.cnam;

Попробуйте сами

Комментарий:Даже если getter является методом, не используйте скобки, когда хотите получить значение свойства.

Имя метода getter/setter не должно совпадать с именем свойства, в данном примере это carname.

Многие программисты используют символ подчеркивания _ перед именем свойства, чтобы отделить getter/setter от фактического свойства:

Экземпляр

Вы можете использовать символ подчеркивания, чтобы отделить getter/setter от фактического свойства:

class Car {
  constructor(brand) {
    this._carname = brand;
  }
  get carname() {
    return this._carname;
  }
  set carname(x) {
    this._carname = x;
  }
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.carname;

Попробуйте сами

Если нужно использовать setter, используйте синтаксис, аналогичный установке значения свойства, без скобок:

Экземпляр

Использование setter для изменения названия автомобиля на "Volvo":

class Car {
  constructor(brand) {
    this._carname = brand;
  }
  get carname() {
    return this._carname;
  }
  set carname(x) {
    this._carname = x;
  }
}
let myCar = new Car("Ford");
myCar.carname = "Volvo";
document.getElementById("demo").innerHTML = myCar.carname;

Попробуйте сами

Hoisting

В отличие от функций и других заявлений JavaScript, объявления классов не поднимаются.

Это означает, что вам нужно сначала объявить класс, а затем использовать его:

Экземпляр

//Вы еще не можете использовать этот класс.
//myCar = new Car("Ford")
//Это вызовет ошибку.
class Car {
  constructor(brand) {
    this.carname = brand;
  }
}
//Теперь вы можете использовать этот класс:
let myCar = new Car("Ford")

Попробуйте сами

Комментарий:Для других заявлений, таких как функции, ошибка не возникает при попытке использования их до объявления, так как по умолчанию поведение объявления JavaScript - это的提升 (перемещение объявления в верхнюю часть).