JavaScript에서 extends 키워드에 대해 알아보기

Photo of author

By tester

안녕하세요! 자바스크립트 전문 블로거입니다. 오늘은 자바스크립트에서 extends 키워드에 대해서 알아보도록 하겠습니다. 자바스크립트의 extends 키워드는 객체 지향 프로그래밍에서 상속 관계를 구현하기 위해 사용됩니다. 상속은 객체 지향 프로그래밍의 중요한 개념이며 코드 재사용성과 유지 보수성을 높여줍니다.

extends 키워드의 기본 개념

extends 키워드를 사용하여 한 클래스가 다른 클래스를 상속받을 수 있습니다. extends 키워드를 사용하여 상속 받은 클래스는 상속한 클래스의 속성과 메소드를 모두 사용할 수 있게 됩니다. 상속받은 클래스는 extends 키워드 뒤에 부모 클래스의 이름을 지정하여 선언합니다.

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  speak() {
    console.log(this.name + ' barks.');
  }
}

const dog = new Dog('Max');
dog.speak(); // 출력: Max barks.

위의 예시 코드에서 Dog 클래스는 Animal 클래스를 상속 받았습니다. Dog 클래스의 인스턴스인 dog는 부모 클래스인 Animal의 속성과 메소드를 사용할 수 있습니다. Dog 클래스는 speak 메소드를 오버라이딩하여 ‘barks’라는 다른 메시지를 출력합니다.

extends 키워드의 유용성

extends 키워드를 사용하면 코드의 재사용성을 증가시킬 수 있습니다. 부모 클래스에서 공통적으로 사용되는 속성과 메소드를 한 번 정의하고, 자식 클래스에서는 추가적인 동작을 구현하는 것이 가능해집니다. 이를 통해 중복 코드를 피하고 더욱 모듈화된 코드를 작성할 수 있습니다.

또한, extends 키워드를 사용하여 상속을 구현함으로써 코드의 유지 보수성을 높일 수도 있습니다. 부모 클래스의 수정이 필요한 경우 자식 클래스를 수정하지 않고 부모 클래스만 수정하여 변경 내용을 자식 클래스에 자동으로 반영할 수 있습니다. 이렇게 함으로써 코드의 변경 및 유지 보수 과정에서 발생할 수 있는 오류를 최소화할 수 있습니다.

자주 묻는 질문

Q: extends 키워드와 prototype의 차이점은 무엇인가요?

A: extends 키워드는 ES6에서 도입된 클래스 기반 상속의 문법적인 형태를 제공합니다. 반면에 prototype은 객체의 프로토타입 체인을 이용한 상속을 구현하는데 사용됩니다. extends 키워드를 사용하면 훨씬 더 직관적이고 명확한 코드를 작성할 수 있습니다.

Q: extends 키워드로 다중 상속을 구현할 수 있나요?

A: extends 키워드는 한 번에 하나의 클래스만 상속할 수 있습니다. 다중 상속을 구현하기 위해서는 mixin 패턴이나 다른 방법을 사용해야 합니다.

Q: extends 키워드를 사용하여 내장 객체(Array, Function 등)를 상속할 수 있나요?

A: 일반적으로 내장 객체는 extends 키워드를 사용하여 상속할 수 없습니다. 하지만, 프로토타입 체인을 이용한 상속 방법을 사용하면 내장 객체를 확장하여 사용할 수 있습니다.

정리

지금까지 extends 키워드에 대해 알아보았습니다. extends 키워드를 사용하면 자바스크립트에서 객체 지향 프로그래밍의 상속 개념을 구현할 수 있습니다. 상속을 통해 코드의 재사용성, 모듈화, 유지 보수성을 높일 수 있으며, extends 키워드를 사용함으로써 명확하고 간결한 코드를 작성할 수 있습니다. 다만, extends 키워드는 다중 상속을 지원하지 않기 때문에 다중 상속이 필요한 경우에는 다른 방법을 사용해야 합니다.

이제 당신도 extends 키워드를 활용하여 자바스크립트의 상속을 구현하는 방법에 대해 알게 되었습니다. 자바스크립트에서 extends의 사용법을 잘 익혀서 더 효율적이고 유지 보수가 용이한 코드를 작성하는 데 활용해보세요!

Leave a Comment