@Torento20345

Как правильно наследовать классы в JS?

Пытаюсь освоить ООП в JS и понятие абстрактности (js единственный язык, который знаю/учу).
Подскажите пожалуйста, как правильно наследовать и работать с классами?

К примеру, у меня есть класс
class Main {} в котором у меня 6 свойств о пользователе
Есть класс для подключения
class Connect {}
И класс для личного кабинета
class Room {}

По документации, естьextends, но он берет свойства из родительского класса.
И получается для Room мне нужно получить данные из Connect и Main
Как я понял, мне нужно заимствовать для Room 2 класса.
И получается, что для каждого класса нужна своя переменная - для меин, коннект и рум.

А нельзя как-то все классы в один объединить, чтобы
var main = new Main();

И работать только через переменную main со всеми свойствами коннекта и кабинета?
А не создавать под каждый класс свою переменную.

Или может я что не так понял с удобством использования классов?

Ведь в итоге, если не дай бог, там будут ещё аргументы, то за super придется следить во всех классах и получится путаница.
  • Вопрос задан
  • 106 просмотров
Решения вопроса 2
Xomek
@Xomek
Программист любитель
Приветствую.

Приведу пример: У тебя есть класс - class Product{}
У него есть свои свойства относящиеся ко всем продуктам, обобщённые если можно так сказать, так же могут быть и методы...
Но что если нам нужно что то более конкретное? Например яблоко, ведь яблоко тоже продукт? Конечно.
class Apple extend Product{Тут мы сможешь указать только те свойства, которые относятся только к яблоку.}, при этом все свойства и методы продукта будут и у яблока.
Также мы можем пойти и дальше... Т.е наследуемся от яблока в новом классе и уже получаем все свойства и методы и яблока, и продукта, еще и можем указать новые, уникальные только для этого класса.

Это то, как я понимаю классы и их наследование, использование.
В любом случаем есть много нюансов и советую всё таки прочитать на том же js learn.
Ответ написан
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
А нельзя как-то все классы в один объединить, чтобы
var main = new Main();


В данном случае не нужно наследование. Наследование, это передача признаков от родителя к потомку и добавление последнему какой-то специфики. У вас все объекты разнородные. Они не являются потомками друг друга.

Может быть подойдет внедрение зависимостей.

class Main {
  constructor(connect, room){
    this.connect = connect;
    this.room = room;
  }
}

const main = new Main(
  new Connect,
  new Room
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы