인프런 커뮤니티 질문&답변

허연우님의 프로필 이미지
허연우

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

클래스

상속과 속성 관련 질문 드립니다

작성

·

190

0

class Zero extends Human {
	constructor(type, firstName, lastName) {
		super(type);
		this.firstName = firstName;
		this.lastName = lastName;
	}

	sayName() {
		super.breathe();
		alert(`${this.firstName} ${this.lastName}`);
	}
}

이 class 선언에서 질문이 있습니다!

1. 이미 super(type); 으로 type 값을 부모 요소에서 가져오기로 결정했는데, 굳이 생성자에서 argument로 type을 받는 이유가 있을까요? 

2. 또, 제가 dart 언어를 공부하다 와서 헷갈리는 부분일수도 있지만, JS에서 class 내의 property를 설정해주기 위해서는 꼭 생성자의 argument로 넘겨주어야 하는 건가요?

3. 이어서 첫번째 질문으로 돌아가자면, class 선언문 내에 

const type = super(type);

이런 식으로 property를 설정해주고 생성자에서 super(type);을 빼주면 안될까요?

이상 3가지 질문을 드리고 싶습니다. 좋은 강의 감사드립니다!

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

1. 부모에서 가져오는게 아니라 부모 클래스에 가져다 주는 겁니다. 부모 클래스에 this.type = type; 이 있으니 여기에 type을 가져다주는 겁니다.

2. 아뇨. setter처럼 만드실 수도 있습니다. property는 동적으로 나중에 만들 수 있습니다.

3. super는 property로 못 뺍니다.

허연우님의 프로필 이미지
허연우

작성한 질문수

질문하기