1. [객체지향 프로그래밍] 생성자
ㅇ 생성자
- 어떤 클래스의 객체를 생성할 때, 자동으로 호출되는 특별한 메소드
. 즉, 객체를 생성할 때, 자동으로 호출될 목적으로, 미리 만들어지어 정의되는 연산
- 통상, new 연산자에 의해 호출되며, 객체 인스턴스를 생성함
ㅇ 생성자의 역할은,
- 객체의 `생성` 외에도,
- 생성되는 객체에 `초기값 부여`, 기타 `옵션 조정` 등이 가능함
ㅇ 생성자 및 소멸자의 호출
- 객체가 생성,소멸 시에, 자동으로 호출됨
2. [객체지향 프로그래밍] 생성자의 특징
ㅇ 생성자 규칙
- (생성자 명칭)
. 통상, `생성자 이름`은 `클래스 이름`과 같음
. 또한, 대문자로 시작하여, 소문자로 시작하는 변수명,함수명 등과는 구별시킴
- (생성자 타입)
. 객체를 생성하는 함수 처럼 행동하나, 함수 처럼 반환값이 필요없음
. 생성자는, 통상의 메소드가 아니므로,
.. 리턴 타입이나 void형 타입으로, 타입 선언될 수 없음
- (생성자 내 this 키워드)
. 생성자 내 클래스 자신을 나타낼 때 this 키워드를 사용하며,
. 생성자에 의해 생성된 객체이면, 이때 this는 생성된 객체를 가리킴
- (생성자는 return 문 없음)
. 생성자 역할은 객체 생성 및 초기화이므로, 굳이 반환값이 필요 없음
- (생성자 사용)
. 통상, 'type varObject = new 생성자()' 형식으로, 객체 인스턴스를 만듬
- (생성자 호출 시기)
. new 연산자에 의해, 객체 인스턴스가 만들어질 때, 호출됨
ㅇ 생성자의 반대 : 소멸자(Destructor)
3. [객체지향 프로그래밍] 디폴트 생성자 (default constructor)
ㅇ 아무 인자도 없는 생성자를 말함
- 이는 따로 정의하지 않아도 시스템이 컴파일시 기본으로 제공하여주며,
- 사실 아무 일도 하지 않음
ㅇ 따라서, 생성자를 일부러 정의하게되면,
- 별도로 디폴트 생성자는 만들어지지 않음
4. [객체지향 프로그래밍] 생성자 호출 및 객체 생성 과정 (자바스크립트 例)
ㅇ ① new 연산자로 생성자 함수를 호출
ㅇ ② 빈 객체를 만듬
ㅇ ③ 만든 빈 객체를 this에 할당
ㅇ ④ 생성자 함수 본체의 코드를 실행 (this에 속성 및 메소드 추가)
ㅇ ⑤ 만들어진 빈 객체의 __proto__에 생성자 함수의 prototype 속성을 대입
ㅇ ⑥ this를 생성자의 반환값(객체)으로 변환시킴