본문으로 바로가기

1. 생성자 정의

 

객체를 생성할 초기화 기능을 제공하는데 이를 생성자(Constructor)라고 한다. 특징은 다음과 같다.

  • 생성자는 return(반환) 값이 없다.
  • 생성자명은 클래스명과 동일해야 한다.
  • 개발자가 생성자를 구현하지 않아도 객체 생성 디폴트 생성자(Default Contructor) 생성된다. - 빈껍데기

생성자가 호출되는 시점은 객체를 생성하기 위하여 new 연산자를 사용할 이다.

  - new 클래스명(매개변수, 매개변수…...)

 

 

다음 소스를 통해 확인해 보도록 하자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class calculator {
    private int leftNum;
    private int rightNum;
 
    //생성자를 통해 인스턴스 변수를 초기화 해준다.
    public calculator(int leftNum, int rightNum) {
        this.leftNum = leftNum;
        this.rightNum = rightNum;
    }
    
    public int sum() {
        return this.leftNum + this.rightNum;
    }
    public static void main(String[] args) {
        calculator cacl = new calculator(35);
        
        System.out.println(cacl.sum());
    }
}
 
 

 

결과)

	8

 

calculator cacl = new calculator(3, 5) 에서 객체를 생성함과 동시에 3 5값을 생성자에 매개변수로 전달하여 인스턴스 변수를 해당 값으로 초기화 해주었다. 만약 생성자에서 초기화하는 역할을 수행하지 않았다면, 별도 인스턴스 변수를 초기화해야하는 메소드가 필요했을 것이다.

 

 

 

2. 생성자 오버로딩

 

생성자는 오버로딩하여 사용할 있다.

(오버로딩의 정의에 대해서는 https://codehouse.tistory.com/25 내용을 통해 숙지하도록 하자.)

생성자의 매개변수 개수, 타입으로 다수의 생성자를 만들 있다.

 

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
public class user {
 
    private String name = "";
 
    public user() {
        this.name = "할당된 이름 없음";
    }
    
    public user(String name) {
        this.name = name;
    }
 
    public user(String firstName, String lastName) {
        this.name = firstName + lastName;
    }
 
    public static void main(String[] args) {
        user test = new user();
        user test2 = new user("철수");
        user test3 = new user("김","철수");
        
        System.out.println(test.name);
        System.out.println(test2.name);
        System.out.println(test3.name);
    }
}
 
 

 

결과)

    할당된 이름 없음
    철수
    김철수

 

객체를 생성할 어떠한 매개변수를 지정하느냐에 따라 서로다른 값이 출력됨을 확인 있다.