상속이란?

 1) 상속은 객체들 간의 관계를 구축하는 방법
 2) 수퍼클래스(부모 클래스) 등의 기존 클래스로부터 속성과 동작을 상속가능       ex) 부모객체 -->> 자식객체   (관계)
 3) 반대되는 부모클래스가 자식클래스의 속성과 동작 상속은 불가능


상속 지정 방법

자식 클래스에서      🎉extends 부모클래스명 🎉 으로 상속 지정

부모 클래스의 속성 + 동작(함수)를 받아올수있음

부모 people 클래스에 name, year속성이 있어, 

자식 police, doctor클래스에서는 속성지정x 으나, poloice 클래스에서 사용가능

 

예시)

class people {
    name;
    year;
    constructor(name, year) {
        this.name = name;
        this.year = year;
    }
}

class police extends people{        // 상속받는 자식애게는 extends 부모 클래스or객체체
    investigate(){
        return `${this.name} 경사가 범죄자를 조사합니다.`;
    }

   // constructor가 없지만 부모(people)의 constructor을 사용할수 있음
}

class doctor extends people{
    cure(){
        return `${this.name} 닥터가 환자를 치료합니다.`;
    }
}

 


자식 클래스로 객체생성 (상속확인)

const doingP = new police('김',1999);
console.log(doingP);        // police { name: '김태원', year: 1999 }

const doingD = new doctor('박',2022);
console.log(doingD);        // doctor { name: '박', year: 2022 }

 


 

🎉클래스의 함수를 사용시
      ①객체를 만들어 변수에 할당   
      ②객체가 할당된 변수.함수이름() 으로 실행

console.log(doingP.investigate());      // 김 경사가 범죄자를 조사합니다.
console.log(doingD.cure());             // 박 닥터가 환자를 치료합니다.

console.log(doingP.name);       // 김
console.log(doingP.year);       // 1999

 


부모클래스로도 당연히 객체 생성가능

💥💥💥단, 부모가!! 자식의 속성,동작 상속불가💥💥💥

const K = new people('K', 1987);
console.log(K);                 // people { name: 'K', year: 1987 }
console.log(K.name);         // K
console.log(K.cure);           // undefined

 


doingP가 people 클래스의 인스턴스 인가확인?        하위 instanceof 상의 

console.log(doingP instanceof people);    // true       people 부모클래스로 생성
console.log(doingP instanceof police);    // true       police 클래스로 생성
console.log(doingP instanceof doctor);    // false      연관없는 클래스

 


doingD가 people 클래스의 인스턴스 인가?

console.log(doingD instanceof people);    // true       people 부모클래스로 생성
console.log(doingD instanceof police);    // false      연관없는 클래스 
console.log(doingD instanceof doctor);    // true       doctor 클래스로 생성

 


 

💥여기서 잠깐!!

인스턴스? 객체? 같은말인가 서로다른가?

 

 결론) 비슷하지만 다름. 
  어떻게달라???
   * 인스턴스 = 클래스/생성자 기반으로 만들어진 객체
   * 객체    = 더 넓은 의미(모든 오브젝트)를 포함

 

 

 

 

 

 

출처: https://www.youtube.com/watch?v=ZOVG7_41kJE&t=183s

 

+ Recent posts