• 모닥위키모닥위키
  • 모닥위키
위키
  • 임의문서
  • 주간인기
  • 문서
  • 시리즈
    AAAdddvvveeerrrtttiiissseeemmmeeennntttAdvertisement

    © 2025 modak.wiki All rights reserved.

      상속, 다형성 그리고 코드 재사용

      Chapter 30 - Inheritance, Polymorphism and Code Reuse

      컴퓨터/IT학습
      lu

      luasenvy (luasenvy)

      CC BY 4.0 국제규약

      상속

      class Human {
        constructor(name){
          this.name = name;
        }
      
        walk() {
          return "one by one step";
        }
      }
      
      class Luasenvy extends Human  {
        constructor(name){
          super(name);
        }
      
        walk() {
          return "fly";
        }
      }
      

      상속은 ES6에서 많은 문법들이 추가되어 현재는 extends 키워드를 사용하면 쉽게 구현이 가능하다. Luasenvy.prototype = Object.create(Human) 과 같은 문법들도 있지만 오래되고 가독성이 떨어져 많이 사용하지는 않는다. 상속 클래스를 만들 때에는 반드시 constructor()에서 super()를 호출하여 상위 클래스의 constructor를 호출해야 한다. 클래스와 팩토리 디자인 패턴에서 프로토타입 체인을 확인할 수 있다.

      다형성

      const human = new Human("Some Guy");
      const luasenvy = new Luasenvy("luasenvy");
      
      const peoples = [human, luasenvy];
      
      peoples.forEach(people => people.walk());
      

      전혀 다른 클래스이지만 동일한 메서드를 사용할 수 있어서 코드의 가독성과 재사용성을 높일 수 있다. 하위 클래스에서 walk()를 구현하지 않아도 walk() 함수를 사용할 수 있는데 super.walk() 함수를 프로토타입으로 참조할 수 있기 때문에 호출될 수 있는 것이다. 만약 하위 클래스에서 상위 클래스의 메서드와 동일한 이름으로 새로 작성하면 하위 클래스에서 작성된 함수가 실행된다. 이러한 구현방식을 오버라이딩(Overriding) 이라고도 한다.

      다형성을 지원하기위해서 Java 같은 언어에서는 동일한 함수명일 경우 파라미터의 유형이나 개수까지 확인하여 선별적으로 호출할 수 있는 오버로딩(Overloading) 기법도 제공하지만 자바스크립트에서는 지원되지 않는다.

      초판: 2024. 08. 20. 21:46:03

      © 2024 이 문서는 "CC BY 4.0 국제규약" 라이선스로 배포 되었습니다. 모든 권리는 저자에게 있습니다.

      상속, 다형성 그리고 코드 재사용

      상속
      다형성