상속이란?
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
'JavaScript' 카테고리의 다른 글
JavaScript 2_6 클래스 문제 테스트 (3) | 2025.06.01 |
---|---|
JavaScript 2_5 Super()와 Overide (0) | 2025.06.01 |
Javascript 2-3 클래스의 static ? (0) | 2025.05.30 |
JavaScript 2-2 클래스의 getter와 setter 그리고 private (0) | 2025.05.29 |
JavaScript 2_1 클래스? constructor? (1) | 2025.05.28 |