Ted's Codding study

상속(Inheritance) 본문

TypeScript

상속(Inheritance)

Ted93 2024. 6. 27. 12:24

1. 상속

1-1) 상속의 정의

  • 한 클래스(부모 클래스)의 속성과 메서드를
  • 다른 클래스(자식 클래스)가 받아 사용할 수 있는 기능
  • 코드의 재사용성을 증가, 유지보수성 개선

 

1-2) 구현 방법

  • extends(확장) 키워드를 사용하여 상속을 구현
  • 자식 클래스는 부모 클래스의 모든 public과 protected 멤버를 상속받음.

 

1-3) 상속의 관계

  • 부모 클래스(슈퍼 클래스, 상위 클래스): 기능과 메서드를 제공
  • 자식 클래스(서브 클래스, 하위 클래스): 기능과 메서드를 전달받음

 

1-4) 상속 예제

  • 동물 클래스를 정의
class Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }

  move(distance: number = 0) {
    console.log(`${this.name} moved ${distance}m`);
  }
}

 

  • Animal 클래스를 상속받는 Dog 클래스 정의
// Dog 클래스 - 자식 클래스
class Dog extends Animal {
  // name: string

  constructor(name: string) {
    // super 메서드
    // 부모 클래스의 생성자를 호출 (반드시!)
    super(name);
  }
  bark() {
    console.log('멍멍!!!');
  }

  // move(distance: number = 0) {
  //   console.log(`${this.name} moved ${distance}m`);
  // }
  // Animal 클래스에서 상속받은 메서드
}

let dog1 = new Dog('푸들');
dog1.move(10); // 푸들 moved 10m
dog1.bark(); // 멍멍!!!
console.log(dog1.name); // 푸들

 

2. 메서드 오버라이딩(Overriding)

  • 자식 클래스에서 부모 클래스의 메서드를 재정의
  • 기존의 메서드를 자식 클래스에 맞게 변경하여 사용

 

2-1) 구현 방법

  • 자식 클래스에서 부모 클래스와 동일한 이름의 메서드를 선언하여 오버라이딩
  • 필요에 따라 super 키워드를 사용하여 부모 클래스의 메서드 호출 가능

 

2-2) 오버라이딩 예제

  • Animal 부모 클래스를 상속받는 Bird 자식 클래스
class Bird extends Animal {
  constructor(name: string) {
    super(name);
  }
  move(distance: number = 5) {
    console.log('~~~Flying~~~');
    super.move(distance);
  }
}

const bird = new Bird('짹짹이');
bird.move(); // ~~~Flying~~~
             // 짹짹이 moved 5m
						 
const bird2 = new Animal('깍깍이');
bird2.move(); // 깍깍이 moved 0m
  • 상속받은 기능을 해당 (자식)클래스에 맞게 재정의
    하나의 기능을 여러 이름이 아닌 하나의 이름으로 묶어서 설정 가능

 

 

노션으로 보고 싶다면?

https://short-echidna-b16.notion.site/Inheritance-9ccd648334474fff9bd5f0f8a40ebf2c?pvs=4

 

상속(Inheritance) | Notion

목차

short-echidna-b16.notion.site