자바 생성자(Constructor)에 대해서 알아보자.
생성자(Constructor)
생성자는 인스턴스가 생성될 때 호출되는 "인스턴트 변수 초기화 메소드"이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 하는 작업을 위해서도 사용된다.
생성자 역시 메소드처럼 클래스 내에 선언되며, 구조도 메소드와 유사하지만 리턴값이 없다는 점이 다르다. 그렇다고해서 생성자 앞에 리턴값이 없음을 뜻하는 키워드 void를 사용하지 않고 아무것도 적지 않는다.
클래스의 구조를 본다면 아래와 같다.
생성자의 특징은 아래와 같다.
- 생성자 이름은 클래스 이름과 같다.
- 생성자는 new 클래스명();에 의해서 호출된다. (연산자 new가 인스턴트 생성. 생성자가 인스턴트 생성X)
- 생성자는 메소드의 일종이다.
- 생성자의 리턴타입이 없다.
- 생성자는 객체가 생성될 때 호출되는 멤버 변수 초기화 메소드이다.
- 생성자는 오버로딩이 가능하다. (오버로딩을 하면 자바 컴파일러는 기본 생성자를 제공하지 않는다.)
- 매개변수가 없는 생성자를 기본(default) 생성자라 한다. 기본 생성자는 자바 컴파일러가 묵시적으로 제공하기 때문에 코드상에서 생략 가능하다. 오버로딩 된 경우는 기본 생성자를 제공하지 않기 때문에 기본 생성자를 명시적인 코드를 하는 습관을 가지는 경우가 좋다.
Member02 m=new Member02();로 m 인스턴스 생성 및 Member02()에 의해 생성자 호출로 멤버변수가 초기화 된다. 그 후 m.pr()로 pr()메소드를 호출하면 생성자에서 초기화된 값이 호출된다.
생성자 오버로딩(Constructor Overloading)
생성자도 오버로딩이 가능하다. 하지만 주의해야할 점이 있는데, 오버로딩 된 경우는 기본 생성자를 제공하지 않기 때문에 기본 생성자를 명시적인 코드를 하는 습관을 가지는 경우가 좋다.
기본생성자를 코드 안한 경우
기본생성자를 코드 한 경우
초기화 블록
초기화 블럭은 대괄호를 사용해서 작성할 수 있다. 초기화 블럭은 생성자가 호출되기 전에 초기화 블럭이 호출된다.
초기화 블럭에 static 초기화 블럭은 해당 클래스가 메모리에 처음 실행될 때 딱 한번만 수행되며, 인스턴스 초기화 블럭은 객체가 생성될 때 마다 수행되며 생성자보다 먼저 실행된다.
ex)
'언어공부 > Java' 카테고리의 다른 글
자바 static 변수 (정적 변수), static 메소드 (정적 메소드) (0) | 2021.05.09 |
---|---|
자바 this 레퍼런스, this. 와 this() (0) | 2021.05.09 |
자바 메소드 오버로딩(메서드 오버로딩, Method Overloading), 자바 가변인자(Varargs, Variable Argument List) (0) | 2021.05.08 |
자바 접근 제어자 - private (동일 클래스 내에서만 사용 가능), public, default, private, 캡슐화 (0) | 2021.05.07 |
자바 기본형 매개변수/ 참조형 매개변수 / 참조형 반환타입 (0) | 2021.05.06 |