“혼자 공부하는 자바스크립트” 스터디 모임 정리 노트 입니다. 📚

클래스의 기본 기능

  • 객체지향 : 객체 위주로 프로그램을 만든다는 방법론

  • 추상화 : 실제 사물/사람/행동 등을 프로그램에 필요한 요소만 추출하여 객체로 표현하는 것.

  • 클래스 : 객체를 안전하고 효율적으로 만들어주는 문법

    // class 선언
    class CLASS_NAME {
        // constructor:생성자. 인스턴스가 생성될 때 처음 호출되는 메소드. 주로 initialize를 담당한다.
        constructor(PARAMETER1, PARAMETER2) {
            this.변수명 = PARAMETER1,
            this.변수명 = PARAMETER2
        }
        // method 정의 
        getSum(){ 
    	    return this.변수명 + this.변수명
        }
    }
    

    ※ 인스턴스 : 클래스를 기반으로 생성한 객체

    ※ Object로도 동일한 구조의 객체를 생성할 수 있다. 단, 내용이 바뀌지 않는 method까지 매번 메모리에 적재되기 때문에 Action이 함께 정의되어야하는 객체는 Class로 작성하는게 유리하다. Class의 method는 생성자가 여러번 사용되더라도 한번만 메모리에 생성되어 사용이 가능하다.

클래스의 고급 기능

  • 상속 ( Inheritance )

    어떤 클래스가 가지고 있는 속성과 메소드를 다른 클래스에게 물려주는 것

    링크 참조

  • Private

    클래스 외부에서 해당 값에 접근할 수 없게하는 속성. 클래스 내 속성과 메소드 이름 앞에 #를 붙여 표시한다.

    class CLASS_NAME{
        #PROPERTY_NAME
        #METHOD_NAME(){ }
    }
    
  • Getter, Setter

    Private 속성에 접근하게 하는 함수. 직접 조건을 설정하여 get과 set하는 값을 제한할 수 있다.

    class CLASS_NAME{
        #number
    	constructor (number){
            this.number = number;
        }
        get number () { return this.#length }
        set number(value) { if(typeof(value) === 'number') this.#number = value }
    }
    
  • Static

    속성과 메소드에 추가하여 정적 속성, 정적 메소드로 만들 수 있다.

    정적 속성과 정적 메소드는 클래스가 인스턴스를 만들지 않더라도 속성/함수를 사용할 수 있게 한다.

    class CLASS_NAME{
        static #number = 0
    	static get number () { return Square.#number}
      
    	constructor(number){
            this.number = number;
        }
          
    	static add (num){
            return num +num
        }
    }
      
    CLASS_NAME.add(3)	// return 6 ▶ 생성자로 인스턴스를 생성하지 않아도 사용할 수 있다 ! 
    

    CLASS 외부에 생성하여도 동일한 결과를 얻을 수 있으나, 어떤 속성과 함수의 카테고리를 명시적으로 나타낼 수 있고, Private 속성을 이용해 안전하게 이용할 수 있다.

  • 오버라이드

    상속받은 함수를 자식 class에서 덮어쓰기 하는 것.

    링크 참조