[javascript] 프로토타입을 이용한 상속과 다형성 구현

이번에는 자바스크립트에서 프로토타입을 이용하여 상속 및 다형성을 구현하는 방법에 대해 알아보겠습니다.

프로토타입 상속

자바스크립트에서는 객체지향 프로그래밍의 상속을 프로토타입을 통해 구현할 수 있습니다.

아래는 Animal이라는 부모 객체를 정의하고, DogCat이라는 자식 객체를 만들어 상속하는 예제입니다.

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;

위의 코드에서 DogCat 객체는 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 메서드를 호출하면 각 객체에 오버라이딩된 메서드가 호출되어 각 객체의 소리를 출력합니다.

프로토타입을 이용하여 상속과 다형성을 구현하는 방법에 대해 알아보았습니다. 이를 통해 객체지향 프로그래밍의 특징을 자바스크립트에서도 구현할 수 있음을 확인할 수 있습니다.

참고문헌:

  1. MDN Web Docs, “Inheritance and the prototype chain” 링크