본문 바로가기
CS

#14. 오버로딩과 오버라이딩

by nacjji 2023. 3. 2.
  • 오버로딩(Overloading)과 오버라이딩(Overriding)은 객체지향 프로그래밍(OOP)에서 자주 사용되는 개념이다.
  • 타입스크립트는 자바와 같은 정적 타입 언어와 유사한 개념이 있다. 
오버로딩(Overloading)

오버로딩(overloading)은 같은 이름의 함수에 여러 개의 시그니처(signature)를 정의하고, 호출 시 인수의 개수나 타입에 따라 다른 동작을 하는 것이다.

예를 들어, 다음과 같이 add 함수에 매개변수 타입에 따라 다른 동작을 수행하는 시그니처를 추가할 수 있다.

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

console.log(add(1, 2)); // 3
console.log(add("Hello, ", "TypeScript")); // "Hello, TypeScript"

위 코드에서 add 함수에는 숫자형 매개변수를 받아 더한 값을 반환하는 시그니처와 문자열 매개변수를 받아 연결한 값을 반환하는 시그니처가 정의되어 있습니다. 이를 통해 매개변수 타입에 따라 다른 결과를 반환할 수 있습니다.

 

 

오버라이딩(Overriding)

오버라이딩(overriding)은 상속받은 클래스에서 부모 클래스에 정의된 메서드를 자식 클래스에서 재정의하여 사용하는 것이다.

예를 들어, 다음과 같이 Animal 클래스를 상속받아 Dog 클래스를 정의하고, Dog 클래스에서 Animal 클래스의 makeSound 메서드를 오버라이딩할 수 있다.

class Animal {
  makeSound() {
    console.log("Some sound");
  }
}

class Dog extends Animal {
  makeSound() {
    console.log("Bark");
  }
}

const dog = new Dog();
dog.makeSound(); // "Bark"

위 코드에서 Dog 클래스는 Animal 클래스를 상속받아 makeSound 메서드를 오버라이딩했다. 따라서 Dog 클래스의 인스턴스인 dog를 생성하여 makeSound 메서드를 호출하면 "Bark"가 출력된다. 이는 Animal 클래스의 makeSound 메서드 대신 Dog 클래스의 makeSound 메서드가 호출되기 때문이다.

'CS' 카테고리의 다른 글

#15. 관계형 데이터베이스(RDB) 와 NoSQL  (0) 2023.03.02
#13. Stack과 Queue, Array와 Linked List  (0) 2023.02.28
#12. 웹서버와 WAS(Web Application Store)  (0) 2023.02.28
#11. TCP와 UDP  (0) 2023.02.27
#10. 트랜잭션  (0) 2023.02.27