오버라이딩 (재정의)

Tags
override
부가 설명
상속받았지만, 내용을 바꾸고 싶을 경우 오버라이딩
비고

오버라이딩

부모 클래스에 정의되어 있지만, 수정해서 사용하고 싶을 경우 오버라이딩 해서 입맞에 맞게 재정의해서 쓰면 된다.
  • 형식은 그대로 명시하고, 함수의 내용을 새롭게 정의하여 사용한다.
  • 부모클래스의 함수를 그대로 쓰되 행위만 추가하고 싶다면 super.함수()를 호출하고 뒤에 내용을 추가하면 됨.
 

코드 예시

  • 자동차 클래스에는 기름양체크(), 기름충전(), 주행(), 경적소리() 함수가 구현되어 있다.
  • 이상한자동차 자동차는 자동차 클래스를 상속받는다.
  • 나머지 코드는 그대로 쓰고 싶은데, 경적소리를 바꾸고 싶어서 재정의 한다.
interface 클락션 { 경적소리(): void; } class 자동차 implements 클락션 { constructor(private 기름양: number) {} 기름양체크() { console.log(`기름양은 현재 ${this.기름양}만큼 남아있습니다.`); } 기름충전(충전량: number) { this.기름양 += 충전량; } 주행(주행량: number) { console.log("뽈뽈뽈 가고 있습니다."); this.기름양 -= 주행량 * 0.5; } 경적소리() { console.log("빵빵"); } } class 이상한자동차 extends 자동차 { constructor(기름양: number) { super(기름양); } 경적소리() { // 함수 재정의 console.log("뀌이이잉"); } } const myCar = new 자동차(20); const myWiredCar = new 이상한자동차(20); const cars: 자동차[] = [myCar, myWiredCar]; cars.forEach((car) => { car.주행(30); car.기름양체크(); car.기름충전(20); car.경적소리(); });
notion image