Абстракция в JavaScript? Добрый день. Скоро будет собеседование на позицию Trainee / Junior JS developer и спрашивать будут про ООП. Первых три принципа понимаю: Наследование - построено на прототипах - ПримерИнкапсуляция - это когда мы можем скрыть свойства или методы от доступа извне, сделав их локальными. - ПримерПолиморфизм - это когда подкласс класса может вызвать ту же самую обобщенную унаследованную функцию в своем собственном контексте. - Пример А вот про абстракцию что то вообще ничего не пойму. Можете на каком то понятном примере объяснить , что такое абстракция в ООП JavaScript'a ?
Абстракция в ООП JavaScript'a означает создание общего класса или интерфейса, который определяет общие свойства и методы, которые должны быть унаследованы другими классами. То есть, абстракция позволяет скрыть детали реализации и сосредоточиться только на важных аспектах объекта.
Пример абстракции в JavaScript:
// Абстрактный класс животные class Animal { constructor(name) { this.name = name; } // Абстрактный метод для издания звука makeSound() { throw new Error('Метод makeSound должен быть реализован в подклассах'); } } // Класс для конкретного животного - собаки class Dog extends Animal { makeSound() { console.log(`${this.name} говорит: гав-гав`); } } // Класс для конкретного животного - кошки class Cat extends Animal { makeSound() { console.log(`${this.name} говорит: мяу-мяу`); } } let dog = new Dog('Шарик'); dog.makeSound(); // Вывод: Шарик говорит: гав-гав let cat = new Cat('Мурка'); cat.makeSound(); // Вывод: Мурка говорит: мяу-мяу
В данном примере, класс Animal является абстрактным, так как он содержит общий метод makeSound, который должен быть реализован в его подклассах. Подклассы Dog и Cat наследуются от класса Animal и реализуют метод makeSound для конкретных животных. Таким образом, абстракция помогает создать общий интерфейс для различных объектов.
Конечно, я объясню.
Абстракция в ООП JavaScript'a означает создание общего класса или интерфейса, который определяет общие свойства и методы, которые должны быть унаследованы другими классами. То есть, абстракция позволяет скрыть детали реализации и сосредоточиться только на важных аспектах объекта.
Пример абстракции в JavaScript:
// Абстрактный класс животныеclass Animal {
constructor(name) {
this.name = name;
}
// Абстрактный метод для издания звука
makeSound() {
throw new Error('Метод makeSound должен быть реализован в подклассах');
}
}
// Класс для конкретного животного - собаки
class Dog extends Animal {
makeSound() {
console.log(`${this.name} говорит: гав-гав`);
}
}
// Класс для конкретного животного - кошки
class Cat extends Animal {
makeSound() {
console.log(`${this.name} говорит: мяу-мяу`);
}
}
let dog = new Dog('Шарик');
dog.makeSound(); // Вывод: Шарик говорит: гав-гав
let cat = new Cat('Мурка');
cat.makeSound(); // Вывод: Мурка говорит: мяу-мяу
В данном примере, класс Animal является абстрактным, так как он содержит общий метод makeSound, который должен быть реализован в его подклассах. Подклассы Dog и Cat наследуются от класса Animal и реализуют метод makeSound для конкретных животных. Таким образом, абстракция помогает создать общий интерфейс для различных объектов.