class를 복사하는 extends / super
class는 obj 자료 여러개 생성할 때 쓴다고 했는데 만약 내가 class를 너무 잘만들어서 얘 속성에 뭐만 추가하고싶은데.. 할 때 extends/super 사용하면 된다.
할아버지 class 만들었다고 치고
class 할아버지{
constructor(name){
this.성 = 'Kim';
this.이름 = name;
}
}
var 변수다 = new 할아버지(); // 이런식으로 새 obj 생성 가능
할아버지 클래스에 유사한 클래스 하나 더 만들고 싶으면..
class 할아버지{
constructor(name){
this.성 = 'Kim';
this.이름 = name;
}
}
class 아버지 extends 할아버지{
constructor(name){
super(name);
this.나이 = 50;
}
}
요런식으로 만듬 된다 내가 새로 만들 클래스 쓰고 그 뒤에 extends와 함께 기존에 있던 클래스 붙이면됨
여기서 중요한게 super()안붙이면 에러뜸 super()라는 함수는 부모 class의 constructor()의미함
암기 ㄱ ㄱ 위 코드에서는 할아버지 클래스가 애초에 파라미터 받고 있어서 extends받은 클래스도 파라미터 써준거지 만약 파라미터 비어있으면 안써야됨
위 코드 하단에 var a = new 아버지('만수'); 이케 적으면 a는 어떤 내용 가지고 있을까?
생각하고 봐라
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
{성 :'Kim' , 이름 : '만수' , 나이 : 50 } 임
class간에 함수를 상속하고 싶으면 우쨰함
class 할아버지{
constructor(name){
this.성 = 'Kim';
this.이름 = name;
}
sayHi(){
console.log('안녕 나는 할아버지')
}
}
class 아버지 extends 할아버지{
constructor(name){
super(name); // <--------------여기
this.나이 = 50;
}
sayHi2(){
console.log('안녕 나는 아버지');
super.sayHi();
}
}
var a = new 아버지('만수');
똑같이 super()쓰면 됨
그럼 위 코드에서 a.sayHi2() 실행하면 뭐 나올까?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
'안녕 나는 아버지' '안녕 나는 할아버지' 나오겠지