• 원래 자바스크립트에는 클래스가 없었다

    → 자바스크립트는 프로토타입 기반의 언어

  • 클래스란?

    → 객체지향 프로그래밍(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 자식클래스이름(매개변수들...);
      인스턴스명.메서드명();