인터페이스의 구현 (implements)이란?
- 인터페이스가 정의한 규격을 클래스가 받아들여 실제로 작동하는 코드로 완성하는 과정
implements 키워드를 통해 구현
- 해당 인터페이스의 모든 규칙을 반드시 지키겠다는 일종의 계약
// -------------- Interface ------------------
interface Swimming {
swimming(): void;
}
interface Flight {
flying(): void;
}
// -------------- Mammal 관련 -----------------
abstract class Mammal {
constructor(
protected name: string
) {
this.name = name;
}
// 추상 메소드
abstract residence(): void;
// 일반 메소드: 공통 동작
public breath(): void {
console.log(`${this.name} 숨쉽니다.`);
}
}
// 고래: 포유류를 상속받고 수영 기능을 구현
class Whale extends Mammal {
override residence(): void {
console.log(`${this.name} 바다에 삽니다.`);
}
swimming(): void {
console.log(`${this.name} 수영한다.`);
}
}
// 날다람쥐: 포유류를 상속받고 비행 기능을 구현
class FlyingSquirrel extends Mammal {
override residence(): void {
console.log(`${this.name} 산에 삽니다.`);
}
}
// ------------------ Fish 관련 ------------------------
// --------- 인터페이스를 통한 다중 구현 예제 ------------
// 날치: 어류(Fish)를 상속받고 수영과 비행을 모두 구현
class FlyingFish implements Swimming, Flight {
// 수영, 비행, 바다에 산다.
swimming(): void {
console.log(`날치 수영한다.`);
}
flying(): void {
console.log(`날치 날다.`);
}
}