[javascript] 다형성의 개념과 활용

다형성(Polymorphism)은 객체지향 프로그래밍에서 중요한 개념 중 하나입니다. 다형성은 한 가지 타입이 다양한 형태를 나타낼 수 있는 능력을 말합니다. 예를 들어, 같은 메서드 이름을 갖고 있지만 각기 다른 방식으로 동작할 수 있도록 하는 것입니다.

다형성의 개념

다형성은 주로 상속(inheritance)을 통해 구현됩니다. 상속 관계에 있는 클래스들은 부모 클래스에서 정의된 메서드를 자식 클래스에서 오버라이딩하여 각 클래스의 특성에 맞게 구현할 수 있습니다. 여기서, 부모 클래스의 참조 변수를 사용하여 자식 클래스의 객체를 참조할 수 있어 다형성을 활용할 수 있습니다.

예를 들어, 동물을 나타내는 Animal 클래스가 있고, DogCat 클래스가 Animal 클래스를 상속한다고 가정해봅시다. 이때 Animal 클래스에 정의된 makeSound 메서드를 각각의 자식 클래스에서 다르게 구현하여 개와 고양이가 각각 다른 소리를 내도록 할 수 있습니다.

class Animal {
  makeSound() {
    console.log('동물 소리');
  }
}

class Dog extends Animal {
  makeSound() {
    console.log('멍멍');
  }
}

class Cat extends Animal {
  makeSound() {
    console.log('야옹');
  }
}

const dog = new Dog();
const cat = new Cat();

dog.makeSound(); // 출력: 멍멍
cat.makeSound(); // 출력: 야옹

위 예제에서 Animal 클래스의 makeSound 메서드를 DogCat 클래스에서 오버라이딩하여 다형성을 구현했습니다.

다형성의 활용

다형성은 코드의 유연성을 높이고 중복을 줄여주는 장점이 있습니다. 동일한 코드를 사용하여 다양한 형태의 객체를 다룰 수 있어서 코드의 재사용성을 높여줍니다. 또한, 추상화를 통해 고수준의 코드에서 세부적인 구현을 신경 쓰지 않고 전체적인 로직을 구성할 수 있게 해줍니다.

또한, 다형성은 인터페이스와도 관련이 있어서 객체가 특정 인터페이스를 구현하고 있는지를 확인하여 동적으로 호출할 수 있도록 합니다.

다양한 객체들을 처리해야 하는 경우에는 다형성을 적절히 활용하여 유연하고 확장 가능한 코드를 작성할 수 있습니다.

마무리

다형성은 객체지향 프로그래밍에서 중요한 개념으로, 상속과 인터페이스를 통해 구현됩니다. 코드의 유연성과 재사용성을 높여주는 다형성은 객체지향적인 설계를 위해 꼭 이해하고 활용해야 하는 개념입니다.

참조: MDN Web Docs - 다형성


추가 참고 자료