원래 자바스크립트에는 클래스가 없었다
→ 자바스크립트는 프로토타입 기반의 언어
클래스란?
→ 객체지향 프로그래밍(Object Oriented Programming : OOP)
→ 세상 만물을 상태와 동작으로 정의하고, 그렇게 정의한 틀을 가지고 객체들을 마구마구 찍어내는 프로그래밍 방법론
상태 : 변수
동작 : 메서드
객체를 만든다 - 상태와 동작 즉 변수와 메서드를 작성한다.
객체를 토대로 인스턴스를 찍어낸다.
클래스의 구조
class 클래스이름 {
초기화하는 부분(상태:변수) = constructor 메서드 = 초기화가 필요 없는 경우 생략한다.(상태를 가질 필요가 없는 경우)
메서드 부분
}
//객체 생성방법
class 클래스이름{
//constructor
constructor(매개변수1,...){
this.매개변수명 = 매개변수;
}
//method
메서드이름() {
메서드 동작
}
}
//인스턴스 생성방법
const 인스턴스명 = new 클래스이름(매개변수1,...);
//인스턴스 메서드 동작방식
인스턴스명.함수이름();
클래스 상속
부모 클래스가 가지고 있는 것(상태:변수 / 동작:메서드)을 자식 클래스에게 그대로 넘겨 주는것(기본값으로 자식 클래스는 가지고 있음)
자식만의 상태를 가지고 싶다면 (자식 클래스의 constructor에서 this 키워드를 사용하고 싶다면) 반드시 부모클래스의 생성자(super)가 먼저 호출되어야 한다.
super 뜻은 자식클래스가 상속한 부모클래스의 constructor 속 매개변수를 인스턴스가 만들어질 때 받아온 매개변수값으로 초기화 해줄 것이다.
super : 부모 클래스를 초기화해주기 위해 호출
//부모클래스
class 부모클래스이름{
//클래스 내용
}
//자식클래스
class 자식클래스이름 extends 부모클래스이름{
//(이미 부모 클래스의 클래스 내용은 가지고 있는 상태)
//자식클래스의 내용
constructor(부모클래스의 매개변수1,부모클래스의 매개변수2,..매개변수1,매개변수2...){
super(부모클래스의 매개변수1,부모클래스의 매개변수2...); //super로 부모클래스에 있는 것을 초기화 시켜줘야함
this.매개변수1 = 매개변수1;
this.매개변수2 = 매개변수2;
...
}
//method
메서드이름() {
메서드 동작
}
}
const 인스턴스명 = new 자식클래스이름(매개변수들...);
인스턴스명.메서드명();