본문 바로가기

Frontend/typescript

Typescript 배우기 6 (클래스)

// 클래스
// class Train{
//   constructor(color){
//     this.color = color;
//   }
//   start(){
//     console.log("start");
//   }
// }
// JavaScript에서는 문제없지만 Typescript에서는 타입선언이 안되어 있어 에러

//추상 class
abstract class Train {
  public name: string = 'train';
  // public, private(#), protected
  static wheels = 100;
  constructor(public color: string, name) {
    // public or readonly 변수 앞 선언
    this.color = color;
    this.name = name;
  }
  start() {
    console.log('start');
    console.log(this.name);
    console.log(Train.wheels);
    // static 선언시 this는 error
  }
  abstract doSonthing(): void;
}
// const ktx = new Train('red', 'ktx');
// 추상클래스 선언시 new는 사용 안됨

// 접근 제한자(Access modifier)
// public - 자식 클래스, 클래스 인스턴스 모두 접근 가능
// private - 해당 클래스 내부에서만 접근 가능
// protected - 자식 클래스에서도 접근 가능

class Mugunghwa extends Train {
  constructor(color: string, name) {
    super(color, name);
  }
  showName() {
    console.log(super.name); // error private
  }
  // 상속받은 클래스는 추상메소드를 구체화시켜야함
  doSonthing() {
    console.log('do');
  }
}

const yongsanHang = new Mugunghwa('black', 'yongsan');
console.log(yongsanHang.name); // error protected

https://www.youtube.com/watch?v=17Oh028Jpis&list=PLZKTXPmaJk8KhKQ_BILr1JKCJbR0EGlx0&index=6 

https://www.youtube.com/watch?v=OpvtD7ELMQo 

 

728x90