추상클래스?
추상함수를 가지는 클래스라고 생각하면 된다.
반복적인 기능이 있고 특정 기능만 자식클래스에서 달라진다면, 
추상함수를 가지는 추상클래스로 만들면 좋다.특징
abstract class키워드로 추상 클래스 정의
- 추상클래스로는 오브젝트 생성 불가. (구현되지 않은 추상적인 요소가 있으므로 당연함)
 

- 추상클래스를 상속할 경우 생성자 함수에서 
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.울기();
