[javascript] 클래스 ( Class )
“혼자 공부하는 자바스크립트” 스터디 모임 정리 노트 입니다. 📚
클래스의 기본 기능
-
객체지향 : 객체 위주로 프로그램을 만든다는 방법론
-
추상화 : 실제 사물/사람/행동 등을 프로그램에 필요한 요소만 추출하여 객체로 표현하는 것.
-
클래스 : 객체를 안전하고 효율적으로 만들어주는 문법
// 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에서 덮어쓰기 하는 것.
링크 참조