23.07.30 18:17 작성
·
217
·
수정됨
0
상속받은 Class에서 부모 메소드 Override 조건이
// 1) 부모 메서드와 반환 타입이 일치해야한다.
// 2) 부모 메서드에 필수인 파라미터들이 존재해야한다.
// 3) 부모 메서드에서 optional인 파라미터들이 자식에서
// 필수로 지정되면 안된다.
라고 강의에서 이야기 하셨는데,
3)의 경우 잘못된게 아닌가 싶어서 문의드립니다.
class Parent {
shout(name: string, age?: number) {
return `${name}야 안녕!`;
}
}
class Child extends Parent {
shout(name: string, age: number): string {
return super.shout(name);
}
}
위 링크와 같이 부모 클래스에 존재하는 optional 파라미터가 자식 클래스에서 필수로 지정되어도 오류가 발생하지 않는 것 같습니다.
제가 확인하고 정리한 요건은 다음과 같습니다.
부모 메소드와 자식 메소드의 반환 타입이 일치해야 함
부모 메소드에서 필수인 파라미터들은 자식 메소드에도 동일한 타입으로 필수 파라미터로 존재해야 함
부모 메소드에 존재하지 않는 필수인 파라미터가 자식 메소드에 존재하지 않아야 함
부모 메소드에 존재하는 optional 파라미터는 자식 메소드에 존재하지 않아도 됨(단, 존재할 경우 타입은 일치해야함)
자식 메소드에 optional 파라미터는 추가적으로 존재해도 됨
혹시 제가 잘못 생각한 부분인지 확인 부탁드립니다.
감사합니다.
답변 3
0
2023. 08. 01. 15:03
안녕하세요!
제가 테스트 해봤는데 현재 말씀하신 부분이 맞는걸로 확인됩니다.
다만 제가 분명 공식 다큐멘테이션에서 확인하고 테스트 한 후에 작성했던 커리큘럼이라 조금 이상하네요.
현재 레퍼런스를 못찾고 있는데 확인 후 다시한번 컨펌 드리도록 하겠습니다.
감사합니다!
2024. 08. 02. 10:12
안녕하세요!
Intuitioner님과 basestar011님의 말씀이 맞는걸로 확인됩니다!
혼선을드려 죄송합니다!