[ES6] 15. class를 복사하는 extends / super

fe.syhan·2023년 10월 31일

JS 기초

목록 보기
43/52
post-thumbnail

extends


class를 상속한 class를 만들고 싶을 때 쓴다.

class 할아버지{
	constructor(name) {
		this.= 'Kim';
		this.이름 = name;
	}
}

이제 new 할아버지() 키워드로 새로운 객체를 생성할 수 있다.

그런데 이 class가 너무나도 유용한 나머지 이것과 유사한 class를 하나 더 만들고 싶다면?

그냥 class를 하나 만들고 내용을 그대로 옮겨주면 되지만 그러면 코드가 길어지게 된다.

그래서 extends 키워드를 사용해 class를 상속하는 class를 만든다.

class 아버지 extends 할아버지{
	constructor() {
		this.나이 = 50;
	}
}

var 아버지1 = new 아버지1();
// Uncaught ReferenceError: 
// Must call super constructor in derived class 
// before accessing 'this' or returning from derived 
// constructor at new 아버지

하지만 super를 써야 된다며 에러가 있다.

class 할아버지{
  constructor(name){
    this.= 'Kim';
    this.이름 = name;
  }
}

class 아버지 extends 할아버지{
  constructor(){
    super();
    this.나이 = 50;
  }
}

아버지.이름; // undefined

super()

super()는 extends로 상속중인 부모 class의 constructor() 를 의미한다. 즉 할아버지 class의 constructor() 를 의미한다.

그러므로 할아버지가 가진 모든 속성들을 정확히 상속 받기 위해서 파라미터들을 똑같이 명시해 줘야 한다.

class 할아버지{
  constructor(name){
    this.= 'Kim';
    this.이름 = name;
  }
}

class 아버지 extends 할아버지{
  constructor(name){
    super(name);
    this.나이 = 50;
  }
}

0개의 댓글