티스토리 뷰
생성자란?
- 클래스를 구성하는 구성요소 중 하나인 생성자는 객체를 생성할 때 호출되어 객체의 초기화를 담당하는 특별한 메서드다.
- 객체를 생성하고 초기화하기 위해서는 반드시 생성자를 호출해야 한다.
- 따라서 객체를 생성해야 하는 참조용 클래스는 모두 생성자를 가지고 있다.
생성자의 정의
- 생성자는 반환값이 없지만, 반환타입을 아예 작성하지 않는다.
- 생성자는 필드의 초기화를 위한 데이터를 파라미터(매개변수)로 전달받을 수 있다.
생성자의 호출 방법
접근제한자 클래스명(파리미터1, 파리미터2,...){
}
생성자가 호출되는 경우
- 생성자는 클래스를 기반으로 객체를 생성할 때, 객체의 초기화를 담당하는 역할을 하므로 객체를 생성할 때만 호출할 수 있다.
기본생성자
- 자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 한다.
- 클래스를 생성하면서 개발자가 직접 생성자를 선언하지 않아도 자바 컴파일러가 기본생성자를 자동으로 제공해주고 있다. (개발자 눈에는 안 보인다.)
- 기본생성자는 파라미터가 별도로 없으며, 중괄호 안에 코드가 없는 비어있는 생성자를 말한다.
- 기본생성자는 개발자가 생성자를 직접 선언하지 안 했을 경우에만 컴파일러가 추가한다.
public class ConTest { //생성용 클래스
public String name; //필드
public ConTest(String name) {
this.name = name;
System.out.println("name이 " + name + "으로 초기화 됨");
System.out.println("나는 생성자임ㅋ");
}
}
public class ConMain { //실행용 클래스
public static void main(String[] args) {
ConTest ct = new ConTest("홍길동");
//ct.ConTest(); 생성자는 객체 선언시에만 호출할 수 있다.
}
}
결과
name이 홍길동으로 초기화 됨
나는 생성자임ㅋ
실행용 클래스에 객체를 생성한 코드만 있지만 출력문 두 개가 출력된 것을 확인하면서 우리는 생성자 메서드는 객체를 생성할 때 자동으로 호출되는 것을 알 수 있다.
생성자를 선언하는 이유
- 생성자는 객체를 생성함과 동시에 객체를 초기화할 수 있다.
- 생성자를 통해 객체를 만들기 위해 꼭 필요한 데이터를 입력받으면서 입력하지 않으면 객체를 생성할 수 없게 해 주는 기능으로 쓸 수 있다.
ex) 사람 객체를 생성하는데 이름을 적지 않으면 객체를 생성 못하도록 막을 수 있다.
예제
생성자를 이용해 이름과 나이를 파라미터로 받아서 초기화를 해주고,
이름과 나이를 출력해 주는 메서드를 만들어보자
public class Person { //생성용 클래스
String name;
int age;
public Person(String n, int a) {
name = n;
age = a;
}
public void introduce(){
System.out.printf("안녕하세요 저는 %d살 %s입니다. \n",age,name);
}
}
public class Pmain { //실행용 클래스
public static void main(String[] args) {
Person p1 = new Person("홍길동",30);
p1.introduce();
Person p2 = new Person("김길동",20);
p2.introduce();
}
}
결과
안녕하세요 저는 30살 홍길동입니다.
안녕하세요 저는 20살 김길동입니다.
생성자 쉽게 만들기
생성자도 getter&setter와 같이 쉽게 만들 수 있는 방법이 있다.
위 코드로 예시를 들어보자

일단 만들어 뒀도 생성자는 다시 지우고
우클릭 -> Sourse -> Generate Constructor usisng Field... 을 클릭하면

getter&setter를 만들 때와 비슷한 창이 나온다.
지금은 필드가 두 개밖에 없고 있는 필드를 모두 생성자를 통해 받아올 예정이니 Select All을 클릭해 모두 선택을 해준 뒤
생성해 보자.

자동으로 선택한 필드를 초기화시킬 수 있는 생성자 메서드가 만들어진 것을 확인할 수 있다.
다음 글에서는 오버로딩에 대해 배워보자
[JAVA] 오버로딩(OverLoading)
오버로딩이란? - 자바에서 하나의 메서드 이름으로 여러 기능을 구현할 때 사용한다. 오버로딩의 조건 1. 메서드 이름이 같아야 한다. 2. 파라미터의 개수가 달라야 한다. 3. 파라미터의 개수가 같
treebomb-code.tistory.com
'Java' 카테고리의 다른 글
| [JAVA] 오버로딩(OverLoading), this, this() (0) | 2023.12.20 |
|---|---|
| [JAVA]setter&getter (0) | 2023.12.15 |
| [JAVA] 메서드(method) (0) | 2023.12.14 |
| [JAVA]클래스(Class) (0) | 2023.12.13 |
| [JAVA]배열2(Arrays) (0) | 2023.12.01 |
- Total
- Today
- Yesterday
- java기초
- 자바 배열 생성
- 자바기초
- 생성자를 써야하는 이유
- java overloading
- 생성자 쉽게 만들기
- 자바 클래스 이해
- 자바 배열
- 자바 클래스 설명
- 변수 생명주기
- 자바 배열 내림차순 정렬
- 생성자 호출 위치
- 자바 게터
- 자바 세터
- 자바
- getter setter 쉽게 만들기
- Java
- 자바 기초
- 모바일프레임워크
- 자바 생명주기
- 생성자 위치
- 코린이
- 자바 배열 초기화
- 생성자란
- 자바 this()
- 자료형
- 배열 내림차순
- 코딩
- 게터세터 쉽게 만들기
- 자바 Arrays
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |