[typescript] 정적 메서드와 인스턴스 메서드에서의 오버로딩과 오버라이딩 개념

현대 프로그래밍 언어에서 다형성은 객체 지향 프로그래밍의 중요한 개념 중 하나입니다. 이는 오버로딩(overloading)오버라이딩(overriding)으로 구현됩니다.

오버로딩 (Overloading)

오버로딩은 한 클래스 내에서 동일한 이름을 가진 메서드나 함수를 여러 개 정의할 수 있는 기능입니다. 메서드가 호출될 때 전달되는 인수의 개수 또는 타입에 따라 적절한 메서드가 선택됩니다.

예를 들어, TypeScript에서는 다음과 같이 오버로딩을 사용할 수 있습니다.

class Calculator {
    add(x: number, y: number): number;
    add(x: string, y: string): string;
    add(x: any, y: any): any {
        return x + y;
    }
}

오버라이딩 (Overriding)

오버라이딩은 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하는 것을 의미합니다. 상위 클래스에서 선언된 메서드와 같은 시그니처를 갖는 메서드를 하위 클래스에서 구현함으로써 오버라이딩을 수행합니다.

정적 메서드나 클래스 메서드 또는 인스턴스 메서드에서 오버라이딩을 적용할 수 있습니다. TypeScript에서는 다음과 같이 클래스와 상속을 사용하여 오버라이딩을 수행할 수 있습니다.

class Animal {
    sound(): void {
        console.log("Animal makes a sound");
    }
}

class Dog extends Animal {
    sound(): void {
        console.log("Dog barks");
    }
}

이처럼 TypeScript에서 정적 메서드와 인스턴스 메서드에서의 오버로딩과 오버라이딩은 다형성을 통해 유연하고 확장 가능한 코드를 작성할 수 있게 해줍니다.

참고 자료

  1. TypeScript 공식 문서
  2. “Understanding TypeScript” by Maximilian Schwarzmüller, Packt Publishing