Пытаюсь освоить ООП в JS и понятие абстрактности (js единственный язык, который знаю/учу).
Подскажите пожалуйста, как правильно наследовать и работать с классами?
К примеру, у меня есть класс class Main {} в котором у меня 6 свойств о пользователе
Есть класс для подключения class Connect {}
И класс для личного кабинета class Room {}
По документации, естьextends, но он берет свойства из родительского класса.
И получается для Room мне нужно получить данные из Connect и Main
Как я понял, мне нужно заимствовать для Room 2 класса.
И получается, что для каждого класса нужна своя переменная - для меин, коннект и рум.
А нельзя как-то все классы в один объединить, чтобы var main = new Main();
И работать только через переменную main со всеми свойствами коннекта и кабинета?
А не создавать под каждый класс свою переменную.
Или может я что не так понял с удобством использования классов?
Ведь в итоге, если не дай бог, там будут ещё аргументы, то за super придется следить во всех классах и получится путаница.
Приведу пример: У тебя есть класс - class Product{}
У него есть свои свойства относящиеся ко всем продуктам, обобщённые если можно так сказать, так же могут быть и методы...
Но что если нам нужно что то более конкретное? Например яблоко, ведь яблоко тоже продукт? Конечно.
class Apple extend Product{Тут мы сможешь указать только те свойства, которые относятся только к яблоку.}, при этом все свойства и методы продукта будут и у яблока.
Также мы можем пойти и дальше... Т.е наследуемся от яблока в новом классе и уже получаем все свойства и методы и яблока, и продукта, еще и можем указать новые, уникальные только для этого класса.
Это то, как я понимаю классы и их наследование, использование.
В любом случаем есть много нюансов и советую всё таки прочитать на том же js learn.
А нельзя как-то все классы в один объединить, чтобы
var main = new Main();
В данном случае не нужно наследование. Наследование, это передача признаков от родителя к потомку и добавление последнему какой-то специфики. У вас все объекты разнородные. Они не являются потомками друг друга.
Может быть подойдет внедрение зависимостей.
class Main {
constructor(connect, room){
this.connect = connect;
this.room = room;
}
}
const main = new Main(
new Connect,
new Room
)