[javascript] 프로토타입을 이용한 상속과 다형성 구현
이번에는 자바스크립트에서 프로토타입을 이용하여 상속 및 다형성을 구현하는 방법에 대해 알아보겠습니다.
프로토타입 상속
자바스크립트에서는 객체지향 프로그래밍의 상속을 프로토타입을 통해 구현할 수 있습니다.
아래는 Animal
이라는 부모 객체를 정의하고, Dog
와 Cat
이라는 자식 객체를 만들어 상속하는 예제입니다.
function Animal(name) {
this.name = name;
}
Animal.prototype.sound = function() {
return "Some sound";
};
function Dog(name) {
Animal.call(this, name); // Call the parent constructor
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
function Cat(name) {
Animal.call(this, name); // Call the parent constructor
}
Cat.prototype = Object.create(Animal.prototype);
Cat.prototype.constructor = Cat;
위의 코드에서 Dog
와 Cat
객체는 Animal
객체를 상속받아 부모 객체의 속성과 메서드를 사용할 수 있습니다.
프로토타입 다형성
프로토타입 기반의 언어인 자바스크립트에서는 다형성을 구현할 수 있습니다. 다형성이란, 같은 이름의 메서드를 호출했을 때 각 객체가 가지고 있는 실제 메서드가 호출되는 것을 말합니다.
아래는 상속받은 메서드를 오버라이딩하여 다형성을 구현하는 예제입니다.
Dog.prototype.sound = function() {
return "Woof!";
};
Cat.prototype.sound = function() {
return "Meow!";
};
let dog = new Dog("Buddy");
let cat = new Cat("Lucy");
console.log(dog.sound()); // 출력: "Woof!"
console.log(cat.sound()); // 출력: "Meow!"
위의 예제에서 sound
메서드를 호출하면 각 객체에 오버라이딩된 메서드가 호출되어 각 객체의 소리를 출력합니다.
프로토타입을 이용하여 상속과 다형성을 구현하는 방법에 대해 알아보았습니다. 이를 통해 객체지향 프로그래밍의 특징을 자바스크립트에서도 구현할 수 있음을 확인할 수 있습니다.
참고문헌:
- MDN Web Docs, “Inheritance and the prototype chain” 링크