[javascript] 다형성과 추상 클래스의 개념
다루게 될 주제:
다형성
다형성은 객체지향 프로그래밍에서 여러 개체가 동일한 메시지(메서드)에 대해 다른 방식으로 응답하는 개념입니다.
예시
class Animal {
makeSound() {
console.log('Animal makes a sound');
}
}
class Dog extends Animal {
makeSound() {
console.log('Dog barks');
}
}
class Cat extends Animal {
makeSound() {
console.log('Cat meows');
}
}
let dog = new Dog();
let cat = new Cat();
dog.makeSound(); // 출력: Dog barks
cat.makeSound(); // 출력: Cat meows
위 예시에서 Animal
클래스의 makeSound
메서드를 Dog
및 Cat
클래스에서 재정의하여 다른 동작을 수행하는 것을 볼 수 있습니다.
추상 클래스
추상 클래스는 객체를 직접 만들기 위한 것이 아니라, 다른 클래스들이 공통적으로 가져야 할 속성과 기능을 묶어 놓은 것입니다. 추상 클래스는 직접 객체를 생성할 수 없으며, 이를 상속받은 클래스에서 구체화하여 사용합니다.
예시
class Shape {
constructor() {
if (new.target === Shape) {
throw new TypeError('Cannot instantiate Shape');
}
}
draw() {
throw new Error('Method draw must be implemented');
}
}
class Circle extends Shape {
draw() {
console.log('Drawing a circle');
}
}
let shape = new Shape(); // TypeError: Cannot instantiate Shape
let circle = new Circle();
circle.draw(); // 출력: Drawing a circle
위 예시에서 Shape
클래스는 직접 객체를 생성할 수 없으며, Circle
클래스를 통해 draw
메서드를 구체화하여 사용하는 것을 볼 수 있습니다.
다형성과 추상 클래스는 객체지향 프로그래밍에서 중요한 개념으로, 코드의 재사용성과 유지보수를 향상시키는 데 도움을 줍니다.
참고 자료:
- 다형성: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object
- 추상 클래스: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes/constructor