안녕하세요 이번 글에서는 자바 생성자에 대해서 알아보도록 하겠습니다.
생성자의 구조는 다음과 같습니다.
사용자 정의 생성자의 사용 예시는 다음과 같습니다.
코드로 생성자를 보겠습니다.
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
32
33
34
35
36
37
38 |
/* 생성자
객체가 생성될때 필드에게 초기값을 제공하고 필요한 초기절차를
실행하는 메소드
형식
접근제한자 클래스명(매개변수타입 매개변수이름){
초기설정 코드들;
}
*/
class Car{
private String color;
private int speed;
private int mileage;
public Car() {//생성자 1 : 매개변수가 없음
//기본 생성자
//만약 클래스 생성시에 생성자를 하나도 안 만든 경우
//자동적으로 몸체가 비어있는 이런 생성자가 만들어짐
}
//사용자 정의 생성자
public Car(String c, int s, int m) {
//그러나 이렇게 사용자 정의 생성자가 하나라도 정의되어있으면 기본 생성자는 만들어지지 않음
//클래스에 생성자가 명시적으로 선언되어있으면 반드시 선언된 생성자를 호출해서 객체를 생성
color = c;
speed = s;
mileage = m;
}
public Car(String c, int s) {
color = c;
speed = s;
mileage = 0;
}
public Car(String c) {
color =c;
speed = 100;
mileage = 0;
}
} |
cs |
코드에 주석으로 설명을 적었습니다.
다음은 이 클래스의 메인 함수가 있는 클래스입니다.
1
2
3
4
5 |
public class CarTest {
public static void main(String[] args) {
Car c1 = new Car("벤츠",200);//Car클래스의 인스턴스 c1을 생성하고 생성자로 초기화
}
} |
cs |
이렇게 Car c1 = new Car("벤츠",200);으로 코드를 작성하면 Car클래스의 Car(String c , int s)생성자를 호출해서 사용합니다.
매개변수의 개수와 종류가 같은 것을 자바가 찾아서 실행하는 것입니다.
위의 코드처럼 생성자는 클래스의 인스턴스를 생성함과 동시에 초기화를 할 수 있게 해줍니다.
이제 c1.color에는 "벤츠" , c1.speed에는 200이 들어있습니다.
코드를 조금 바꿔서 출력해보겠습니다.
Car클래스 입니다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
class Car{
private String color;
private int speed;
public Car(String c, int s) {
color = c;
speed = s;
}
public void print() {//출력을 위해 함수를 정의했습니다
System.out.println(this.color+" "+this.speed);
//여기 this는 main 함수에서 c1.print로 함수를 호출해서 사용할때
//c1을 가리키는 키워드입니다
//this.color는 마치 c1.color처럼 동작합니다
//그래서 main에서 벤츠와 200을
}
} |
cs |
CarTest클래스 입니다
1
2
3
4
5
6 |
public class CarTest {
public static void main(String[] args) {
Car c1 = new Car("벤츠",200);//생성자를 사용하고 "벤츠"와 200으로 값을 초기화 합니다
c1.print();//Car클래스 안에 있는 print함수를 호출합니다
}
} |
cs |
출력화면입니다
사용자가 사용자 정의 생성자를 정의하지 않으면 기본 생성자가 생성이 되고 사용됩니다.
1
2
3
4
5
6
7
8
9
10
11 |
class Car{
private String color;
private int speed;
private int mileage;
//생성자의 선언을 생략하면
//이렇게 텅빈 곳에
/*public Car(){
}이런 기본 생성자가 생성됩니다
*/
} |
cs |
위 코드와 같이 기본 생성자가 생성이 되고 사용됩니다
그러나 아래 코드처럼 사용자 정의 생성자를 정의하면 사용자 정의 생성자를 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
12 |
class Car{
private String color;
private int speed;
private int mileage;
public Car(String c, int s, int m) {//사용자 정의 생성자
//이렇게 사용자 정의 생성자를 생성하면
//기본 생성자가 생성이 안됩니다
color = c;
speed = s;
mileage = m;
}
} |
cs |
이렇게 사용자 정의 생성자를 정의하면 기본 생성자를 생성하지 않습니다.
생성자는 setter처럼 값을 설정한다는 것에서는 같습니다.
그런데 생성자는 객체를 생성하면서 값을 초기화 해줄 수 있습니다.
이번 글에서는 생성자에 대해서 알아보았습니다.
설명이 부족하시진 않으셨나요? 질문을 jswoo030@gmail.com 으로 보내주시거나 댓글을 달아주시면 빠른 답변을 받으실 수 있습니다
'Java 강의' 카테고리의 다른 글
자바 스레드 / java thread (0) | 2017.10.12 |
---|---|
자바 소켓 프로그래밍 / 자바 네트워크 프로그래밍 (0) | 2017.10.12 |
자바 Cloneable 사용방법 / 자바 디자인 패턴 - 프로토 타입 패턴 / java design pattern , prototype pattern (0) | 2017.09.29 |
자바 객체 / 클래스 (0) | 2017.09.29 |
자바 함수 / java method (0) | 2017.09.29 |
댓글