: 객체지향 프로그래밍의 특성 중 상속을 javascript에서 구현할 때 사용하는 방법
클래스 상속 ➡️ 해당 클래스를 다른 클래스로 확장할 수 있음
constructor 생성자 함수
ES6 문법에서는 "extends" 와 "super" 키워드를 알아두기
: 클래스의 인스턴스 객체를 생성하고, 초기화하는 특별한 메서드
constructor () { 빈 메서드 }
➡️ 파생 클래스에 직접 생성자를 정의 할 경우 !
ex > this.age = 15
: 부모 클래스의 생성자를 호출하려면 직접 super()를 호출해야 한다.
: 클래스를 다른 클래스의 자식으로 만들기 위해 class 선언 또는 class 식에 사용된다.
먼저 Animal이라는 클래스를 생성
➡️ 생성자함수 constructor() 사용
extend 키워드를 사용하여 Animal 클래스 자식으로 Rabbit 클래스 생성
➡️ Animal을 상속받음
✓ 아래 그림구조 알아두기
①. 생성자 함수(constructor) 의 객체 생성
❍ class Animal
➡️ 생성자 함수의 prototype 객체 생성 ( Animal.prototype )
➡️ ( Animal ) prototype 프로퍼티를 ( Animal.prototype )생성자 함수의 prototype 객체 링크에 연결
➡️ 생성자 함수의 prototype 객체의 constructor 와 객체의 prototype 링크 연결
②. extend 키워드를 사용하여 Animal 클래스를 확장 ( Rabbit )
class Rabbit extends Animal
let rabbit = new Rabbit("흰 토끼");
➡️ 자바스크립트가 내부적으로 Rabbit의 __proto__
프로퍼티에 Animal 생성자 함수의 prototype
과 링크 연결
➡️ extends는 프로토타입을 기반으로 동작
➡️ extends는 Rabbit.__proto__
을 Animal.prototype
으로 설정합니다
➡️ 그렇기 때문에 Rabbit.prototype
에서 메서드를 찾지 못하면 Animal.prototype
에서 메서드를 가져옵니다.
✚ Animalprototype
에도 없다면 ?
: 계속 상위 부모로 올라가서 찾아 !
➡️ 🔮 프로토타입 체인
📌 코드 참조 : 클래스 상속