객체지향 #4

재웅·2023년 4월 6일
0

오늘의 정리

목록 보기
8/52
post-thumbnail

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() 실행하면 뭐 나올까?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
'안녕 나는 아버지' '안녕 나는 할아버지' 나오겠지

profile
오늘의 정리

0개의 댓글