자바스크립트 생성자와 프로토타입 체인의 메서드 오버라이딩 방법

메서드 오버라이딩(Method Overriding)은 객체지향 프로그래밍에서 상속 관계에 있는 클래스에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 의미합니다. 이는 상속받은 메서드를 동일한 이름으로 새롭게 구현하여 부모 클래스의 동작을 덮어쓰는 것입니다. 자바스크립트에서는 생성자와 프로토타입 체인을 통해 메서드 오버라이딩을 할 수 있습니다.

생성자(Constructor)를 통한 메서드 오버라이딩

생성자를 사용하여 메서드 오버라이딩을 구현하려면 다음과 같은 단계를 따릅니다:

  1. 부모 클래스의 생성자를 호출하여 상속받습니다.
  2. 자식 클래스의 생성자에서 부모 클래스의 메서드를 호출하는 코드를 작성합니다.
  3. 자식 클래스에서 부모 클래스의 메서드를 재정의(오버라이딩)합니다.

아래는 생성자를 이용한 메서드 오버라이딩의 예시입니다:

// 부모 클래스 정의
function ParentClass() {
  this.name = "Parent";
}

// 부모 클래스의 메서드 정의
ParentClass.prototype.greet = function() {
  console.log("Hello, I'm " + this.name);
}

// 자식 클래스 정의
function ChildClass() {
  ParentClass.call(this); // 부모 클래스의 생성자 호출
  this.name = "Child";
}

// 자식 클래스에서 부모 클래스의 메서드 오버라이딩
ChildClass.prototype.greet = function() {
  console.log("안녕하세요, 저는 " + this.name + "입니다");
}

// 객체 생성 및 메서드 호출
var parent = new ParentClass();
var child = new ChildClass();

parent.greet(); // 출력: Hello, I'm Parent
child.greet(); // 출력: 안녕하세요, 저는 Child입니다

프로토타입 체인(Prototype Chain)을 통한 메서드 오버라이딩

프로토타입 체인을 사용하여 메서드 오버라이딩을 구현하려면 다음과 같은 단계를 따릅니다:

  1. 부모 클래스의 프로토타입을 자식 클래스의 프로토타입으로 설정합니다.
  2. 자식 클래스에서 부모 클래스의 메서드를 재정의(오버라이딩)합니다.

아래는 프로토타입 체인을 이용한 메서드 오버라이딩의 예시입니다:

// 부모 클래스 정의
function ParentClass() {
  this.name = "Parent";
}

// 부모 클래스의 메서드 정의
ParentClass.prototype.greet = function() {
  console.log("Hello, I'm " + this.name);
}

// 자식 클래스 정의
function ChildClass() {
  this.name = "Child";
}

// 부모 클래스의 프로토타입을 자식 클래스의 프로토타입으로 설정
ChildClass.prototype = new ParentClass();

// 자식 클래스에서 부모 클래스의 메서드 오버라이딩
ChildClass.prototype.greet = function() {
  console.log("안녕하세요, 저는 " + this.name + "입니다");
}

// 객체 생성 및 메서드 호출
var parent = new ParentClass();
var child = new ChildClass();

parent.greet(); // 출력: Hello, I'm Parent
child.greet(); // 출력: 안녕하세요, 저는 Child입니다

이렇게 생성자와 프로토타입 체인을 사용하여 자바스크립트에서 메서드 오버라이딩을 할 수 있습니다.

#JavaScript #메서드오버라이딩