추상클래스

Tags
abstraction
class
부가 설명
비고

추상클래스?

추상함수를 가지는 클래스라고 생각하면 된다.
반복적인 기능이 있고 특정 기능만 자식클래스에서 달라진다면, 추상함수를 가지는 추상클래스로 만들면 좋다.

특징

  • abstract class 키워드로 추상 클래스 정의
  • 추상클래스로는 오브젝트 생성 불가. (구현되지 않은 추상적인 요소가 있으므로 당연함)
    • notion image
  • 추상클래스를 상속할 경우 생성자 함수에서 super()는 호출하지 않아도 되며, 추상 클래스의 추상 메소드만 구현하면 된다.
  • 추상클래스를 상속받은 자식클래스는 반드시 추상메소드를 구현해야 한다.
  • 자식 클래스에서 부모 추상 클래스의 메소드에 접근할 수 있어야하므로 추상함수protected abstract로 작성한다. 그냥 해도 됨.
 

코드 예시

  • 추상클래스 동물에는 밥먹기() 함수와 울기() 함수가 있다.
  • 동물에는 밥먹기() 함수는 정의되어 있고, 울기() 함수는 추상함수다.
  • 고양이 클래스와 강아지 클래스는 추상클래스인 동물 클래스를 상속받는다.
    • 추상클래스에 선언된 추상함수를 반드시 구현해야 한다. (구현 강제)
    • 밥먹기() 함수는 부모 클래스에서 정의되어 있으므로 자식클래스에서 별도로 정의하지 않아도 쓸 수 있다.
abstract class 동물 { abstract 울기(): void; 밥먹기(): void { console.log("밥을 먹는다..."); } } class 강아지 extends 동물 { 울기() { console.log("멍멍"); } } class 고양이 extends 동물 { 울기() { console.log("야옹"); } } const myDog = new 강아지(); const myCat = new 고양이(); myDog.밥먹기(); myDog.울기(); myCat.밥먹기(); myCat.울기();
notion image