TypeScript - 클래스2

Seung min, Yoo·2021년 5월 7일
0
post-thumbnail
  1. 상속과 인터페이스와의 관계
interface Person {
  name: string;
  say(message: string): void;
}
interface Programmer {
  writeCoder(requirement: string): string;
}

class KoreanProgrammer implements Person, Programmer {
  constructor(public name: string) {
    
  }
  say(message: string): void {
    console.log(message);
  }
  wrtieCode(requirement: string):string {
    console.log(requirement);
    return requirement + '...';
  }
  loveKimchi() {
    console.log('love~kimchi~');
  }
}


cnost jay = new KoreanProgrammer('jay');
  1. abstract 키워드를 통해 클래스를 정의하는 방법
    abstract는 이 클래스가 아직 완성되지 않은 클래스라는 것을 말한다.
    이 클래스를 꼭 인스턴스를 바로 만들수는 없지만 이 클래스를 통해서 다른 상속 받은 클래스를 통해서 다른 상속을 받은 클래스를 통해서 인스턴스를 만들 수 있다.

interface Person {
  name: string;
  say(message: string): void;
}

abstract class Korean implements Person {
  
  public abstract jumin: number;
  
  constructor(public name: string) {
    
  }
  
  say(msg: string) {
    console.log(msg);
  }
  
  abstract loveKimchi(): void;
}


class KoreanProgrammer extends  Korean implements Programmer {
  constructor(public name: string, public jumin: number) {
    super(name); //컨스트럭트를 주게 되면 부모클래스의 생성자를 호출해줘야 한다.
  }
  say(message: string): void {
    console.log(message);
  }
  wrtieCode(requirement: string):string {
    console.log(requirement);
    return requirement + '...';
  }
  loveKimchi(): void {
    throw new Error("Method not implemeted.");
  }
}

const jay = new KoreanProgrammer('jay', 2222);
const jay2 = new Korean('jay');// 추상클래스의 인스턴스는 만들수 없다고 에러가 뜬다.
// 상속을 받아서 하이타입에서 추상클래스를 구성해야 하며, 그 결과로 하이타입을 인스턴스화 할 수 있다.
profile
이제 막 개발을 시작한 프로그래밍 입문자

0개의 댓글