Menu
CoddyTech

Отношение «is-a»

Часть раздела Объектно-ориентированное программирование путешествия по JavaScript на Coddy. Урок 25 из 56.

Отношение «является» — это простой способ определить, когда наследование имеет смысл. Если можно сказать «X является Y» и это звучит правильно, то X, вероятно, должен наследоваться от Y.

Правильно (используйте наследование):

  • «Собака является животным» → class Dog extends Animal
  • «Автомобиль является транспортным средством» → class Car extends Vehicle
  • «Учебник — это книга» → class Textbook extends Book

Неправильно (не используйте наследование):

  • «Водитель является автомобилем» → Нет, водитель использует автомобиль
  • «Колесо — это автомобиль» → Нет, колесо — часть автомобиля
  • «Ученик является классом» → Нет, ученик находится в классе

Например, рассмотрим два объекта:

// Базовый класс — то, чем все они ЯВЛЯЮТСЯ
class Book {
  constructor(title, author, pages) {
    this.title = title;
    this.author = author;
    this.pages = pages;
  }
  
  read() {
    console.log(`Reading ${this.title} by ${this.author}`);
  }
}
// Novel ЯВЛЯЕТСЯ Book (правильное наследование)
class Novel extends Book {
  constructor(title, author, pages, genre) {
    super(title, author, pages);
    this.genre = genre;
  }
}
// Использование классов
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read();    // "Reading 1984 by George Orwell" — унаследовано от Book
challenge icon

Задание

Тебе даны класс ElectronicDevice и класс Smartphone. Смартфон — это тип электронного устройства с дополнительными функциями. Твоя задача — создать объект `myPhone` с брендом "Samsung" и моделью “Galaxy S23”.

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

import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';


// TODO: Создайте объект `myPhone` с брендом "Samsung" и моделью “Galaxy S23”.


// Тестовый код — не изменяйте
console.log(myPhone.turnOn());  // Должно выводиться "Samsung Galaxy S23 is now ON"
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор JavaScript