개발자가 내팔자

[TypeScript] Abstract Class와 Interface 본문

Programming Language/JavaScript

[TypeScript] Abstract Class와 Interface

야생의 개발자 2022. 7. 6. 15:59

interface와 추상 클래스의 차이가 뭔지 알아보자.

Abstract Class

추상 클래스는 상속하기 위한 기본 뼈대일 뿐 인스턴스를 생성할 수 없다.
추상클래스로부터 상속을 받은 자식 클래스를 통해서 인스턴스를 생성할 수 있다.

abstract class User {
  constructor (
      protected firstName: string,
    protected lastName: string
     ) {}
  abstract sayHi(name: string): string
  abstract fullName(): string
}

class Player extends User {
  fullName() {
    return `${this.firstName} ${this.lastName}`;
  }

  sayHi(name:string) {
    return `Hello ${name}. My name is ${this.fullName()}`;
  }
}

interface

interface는 private이나 protected같은 접근 제어자를 지정할 수 없다. 모두 public이 된다.

interface User {
  firstName: string,
  lastName: string,
  sayHi(name:string): string
  fullName():string
}

class Player implements User {
  constructor(
      private firstName: string,
    private lastName: string
  ){}
}

Abstract class와 Interface의 차이?

  • 한 번에 여러 개의 interface를 구현할 수 있지만, JS에서는 다중 상속을 지원하지 않는다. (물론 믹스인으로 해결할 수 있지만)
  • interface로는 instance를 만들 수 없고, public 외의 접근 제어자를 지정할 수 없다.

'Programming Language > JavaScript' 카테고리의 다른 글

[TypeScript] Type과 Interface  (0) 2022.07.06
NodeJS의 특징, 강점, 약점  (0) 2022.06.13
Comments