클래스

RuLu·2023년 9월 10일
0
post-thumbnail

클래스

7-1 클래스와 인스턴스의 개념 이해

  • 클래스는 하위로 갈 수록 상위 클래스의 속성을 상속하면서 더 구체적인 요건이 추가 또는 변경된다.
    • 하위 클래스가 아무리 구체화되더라도 결국 추상적인 개념
  • 인스턴스: 클래스의 속성을 지니는 실존하는 개체
    • 클래스에 속한 개체는 그 클래스의 조건을 모두 만족하므로 그 클래스의 구체적인 예시
    • 프로그래밍 언어상에서 한 개체는 하나의 클래스만을 바탕으로 만들어짐
    • 클래스가 먼저 정의되어야만 공통적인 요소를 지니는 개체를 생성할 수 있음
    • 사용에 따라 추상적일수도, 구체적일 수도

7-2 자바스크립트의 클래스

  • Js는 프로토타입 기반이지만, 클래스의 관점에서 접근하면 비슷하게 해석할 수 있다.
  • 인스턴스가 참조하는지 여부에 따라 스태틱 멤버와 인스턴스 멤버로 나뉨
    • 클래스 입장에서 사용 대상에 따라 구분한 것
    • 인스턴스에 정의한 메서드를 지칭할 때 혼란을 야기할 수있음
      • 프로토타입에 정의한 메서드를 지칭하는 것인지
      • 인스턴스에 정의한 메서드를 지칭하는 것인지
    • 따라서 프로토타입 메서드라고 지칭하는 것이 나음
      • 인스턴스에서 직접 호출할 수 있는 메서드
  • 구체적인 인스턴스가 사용할 메서드를 정의한 ‘틀’의 역할을 할 때에는 추상적인 개념
  • 클래스 자체를 this로 해서 직접 접근해야하만 하는 스태틱 메서드를 호출할 때는 하나의 개체

7-3 클래스 상속

분석보다는 어떤 흐름으로 발전했나를 관점으로 읽자.

7-3-1 기본 구현

  • 자바스크립트에서 클래스 상속을 구현했다는 것은 결국 프로토타입 체이닝을 잘 연결한 것

7-3-2 클래스가 구체적인 데이터를 지니지 않게 하는 방법

  • 만들고 나서 프로퍼티들을 일일이 지우고 더는 새로운 프로퍼티를 추가할 수 없게하는 방법
  • SubClass의 prototype에 직접 SuperClass의 인스턴스를 할당하는 대신 아무런 프로퍼티를 생성하지 않는 빈 생성자 함수를 하나 더 만들어서 그 prototype이 SuperClass의 prototype을 바라보게끔 한 다음 SubClass의 prototype에는 빈 생성자 함수의 인스턴스를 할당하게 하는 방

7-3-3 constructor 복구하기

  • SubClass.prototype.constructor가 원래의 SubClass를 바라보도록 함

7-3-4 상위 클래스에의 접근 수단 제공

중요한게 없었어

7-4 ES6의 클래스 및 클래스 상속

중요한게 없었어2

7-5 정리

  • 자바스크립트는 프로토타입 기반 언어라서 클래스 및 상속 개념은 존재하지 않지만 프로토타입을 기반으로 클래스와 비슷하게 동작하게끔 하는 다양한 기법들이 도입됨
    • 클래스는 어떤 사물의 공통 속성을 모아 정의한 추상적인 개념
    • 인스턴스는 클래스의 속성을 지니는 구체적인 사례
  • 상위 클래스의 조건을 충족하면서 더욱 구체적인 조건이 추가된 것을 하위 클래스
  • 클래스의 prototype 내부에 정의된 메서드를 프로토타입 메서드
    • 인스턴스가 마치 자신의 것처럼 호출할 수 있음
  • 클래스에서 직접 정의한 메서드를 스태틱 메서드
    • 인스턴스가 직접 호출할 수 없고 클래스에 의해서만 호출할 수 있음
profile
프론트엔드 개발자 루루

0개의 댓글