inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

06-03 Class 전략 패턴

오버라이딩 질문

해결된 질문

226

karmesin924

작성한 질문수 4

0

class 공중부품 {
  run = () => {
    console.log("날라서 도망가자");
  };
}

class 지상부품 {
  run = () => {
    console.log("뛰어서 도망가자");
  };
}

class Monster {
  power = 10;
  부품;

  constructor(부품, power) {
    this.부품 = 부품;
    this.power = power;
  }

  attack = () => {
    console.log("공격하자!");
    console.log("내 공격력은 " + this.power + "야!");
  };
  run = () => {
    console.log("도망가자!");
  };
}

run 메소드를 this.부품.run();으로 바꿔주지 않아도 뛰어서 or 날아서 도망가자고 바뀌던데요..

상속관계면 오버라이딩으로 생각하고 알아서 바뀌는 것은 이해했는데

이렇게 객체를 집어넣었을 때도 자동을 바꿔주는건 왜 그런건가요?

javascript node.js express docker tdd rest-api nestjs

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.
부품 클래스인 공중부품과 지상부품 클래스는 Monster 클래스에게 상속되지 않았기 때문에, 부품을 this.부품.run()으로 호출하면 오류가 발생합니다.

그런데, Monster 클래스의 run 메소드가 오버라이딩되지 않았기 때문에, this.부품.run() 대신에 this.run()을 호출하면 Monster 클래스의 run 메소드가 실행됩니다.
따라서, 부품을 this.run()으로 호출하면 Monster 클래스의 run 메소드가 실행되어 “도망가자!“라는 메시지가 출력됩니다.

만약, Monster 클래스에서 this.부품.run()으로 호출하고 싶다면, 부품 클래스를 상속받도록 설정해야 합니다. 예를들어, Monster 클래스가 공중부품 또는 지상부품 클래스를 상속받는다면, 부품을 this.run()으로 호출했을 때 해당 부품의 run 메소드가 실행될 것입니다.

현재의 코드에서의 동작은 상속과는 관계없이 this.run()이 실행되므로, 상속과 오버라이딩과는 별개의 내용입니다. 이해에 도움이 되셨길 바랍니다. 어떤 점이 더 질문이 있으신가요?

그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?

0

84

2

강의 전체 소스 코드를 받고싶습니다.

0

76

2

fontawesome 사용 문의

0

79

2

소스 코드 부탁드립니다~

0

85

2

깃 레포지터리 소스

0

86

2

커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요

0

74

2

10-01 Entity TypeOrmModule.forRoot 에 entities

0

88

3

강의 버전관련 문의입니다

0

103

2

Ubuntu 설치 관련

0

61

1

schema.gql 질문 드립니다.

0

51

1

서버 재실행시 Many to Many

0

102

3

input 관련 문의

0

90

2

Rest API 보다는 graphql이 주된 내용인데

0

131

2

강의 전체 소스코드 받을수있을까요?

0

156

1

도커볼륨 마운트 관련

0

127

2

findOne 타입스크립트오류

0

109

1

http => htrtps 호출 인증서 신뢰 오류

0

354

1

self-signed certificate in certificate chain 에러 발생

0

417

1

mongoose 설치 오류

0

142

1

특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)

0

283

2

08-06

0

180

3

구조랑 패턴 관련해서 질문

0

125

2

mydocker

0

128

2

coolsms statuscode 2000 인데 전송안돼는 경우 확인.

0

156

1