[Java] 자바 #20, 생성자와 Getter,Setter 메소드

생성자와 Getter/Setter 메소드

생성자

- 특수한 목적을 가지는 메소드

- 객체를 초기화하는 역할.********************

- 접근지정자 : public 다른애 안가짐.

- 반환값 없다. (void X -> 아예 표기 안함)

- 인자값 가질 수 있다.

- 마음대로 호출 불가

- new : 연산자, 객체생성 연산자.

- 자료형 변수명 = new연산자 생성자.

- 생성자 : 객체를 초기화.


KeyBoard 클래스 예제!

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
class KeyBoard {
    //멤버변수 초기화를 하는 값은 절대 상수만 사용한다.
    private String model; // ="K700";
    private int price;//=Price.getKeyBoard();
    
//생성자1
    public KeyBoard(String model, int price) {
        this.model = model;
        this.price = price;
    }
//생성자2
    public KeyBoard(String model) {
        this.model=model;
    }
생성자 3
    public KeyBoard(int price) {
        this.price=price;
    }
    
    public String getModel() {
        return model;
    }
 
    public void setModel(String model) {
        this.model = model;
    }
 
    public int getPrice() {
        return price;
    }
 
    public void setPrice(int price) {
        this.price = price;
    }
}
cs


다음과 같은 키보드 클래스가 있을때! 객체를 생성하고 초기화하는 코드는 다음과 같다


1
2
3
4
5
6
7
class KeyBoardTest{
    public static void main(String[] args){
        KeyBoard k5 = new KeyBoard("B200"7000);
        KeyBoard k6 = new KeyBoard(7000);
        KeyBoard k7 = new KeyBoard("B200");
    }
}
cs


각각 생성자의 매개값에 들어갈 데이터형을 맞추어 생성하며 이러한 것을 생성자 오버로딩이라고 합니다. 지난번 메소드 파트에서 얘기했던 메소드 오버라이딩과 같은 맥락으로 이해하셔도 좋습니다. 


생성자는 이렇게 DTO같은 클래스 멤버변수의 값을 객체생성과 동시에 초기화시키는 경우에 주로 사용합니다. 이러한 방법도 있지만 더 중요한 방법으로 Setter 메소드를 이용하는 방법도 있습니다.


1
2
3
4
5
6
7
class KeyBoardTest{
    public static void main(String[] args){
        KeyBoard k5 = new KeyBoard();
        k5.setModel("모델1");
        k5.setPrice(10000);
    }
}
cs


이런식으로 setter 메소드를 통해 클래스 멤버변수의 값을 초기화시키는 방법도 있고, 이 방법이 더욱 중요한 것이 Spring프레임워크를 사용할 때는 객체에 대해서 의존주입의 형태가 있습니다. 지금은 어떤 말인지 모르겠지만 어떠한 문법에 따라 객체생성을 코드상으로 명시하지 않고도 프로그램 실행시 자동으로 객체를 변수에 주입시키는 이론인데 이는 기본생성자를 이용해서 처리합니다. 그리하여 생성자 초기화방법은 자동적으로 Spring 프레임워크에서 탈락하게되어 setter 메소드를 이용하여 값을 초기화시키는 방법이 더욱 중요한 방법입니다.


getter 메소드는 단순히 선언된 멤버변수의 값이 private으로 대부분 캡슐화 되어있습니다. 즉, 직접접근할 수 없기때문에 getter메소드를 이용하여 간접적으로 이에 접근하여 반환하는 메소드입니다. 반환값은 해당 멤버변수의 자료형과 같아야 합니다.


Getter/Setter 메소드 명명법!!

생성자는 클래스명과 동일하게 적어야 하기 때문에 이름을 지을때 복붙해주면 사실 그만입니다. 하지만 Getter/Setter 메소드는 반드시 규칙을 준수해야만 합니다.!

위의 예제를 보셨다면 충분히 파악하셨겠지만 다시한번 명시해드리자면


price라는 변수의 Getter/Setter 메소드를 작성할때!

- getPrice

- setPrice

처럼 get/set 다음의 문자는 대문자로 표기하여야 합니다. 그 뒤부터는 변수명과 똑같이 쓰셔야합니다. 이 방법은 역시 Spring 프레임워크에 구동방식에 의해서 주로 사용되는 방식인데. 간단히 소개를 하자면 어떤 변수의 값을 얻기위해 변수명을 대입하면(어딘가에다) 그 값을 호출하기 위해서는 변수명을 getter 형식으로 변환하여 그값을 반환하는 형식으로 이용되는 경우가 있어요. 즉, 변수명이 올바르게 작성했더라도 getter 메소드가 그 규칙대로 작성이 되지 않았다면 결코 호출될수 없는 구조로 되어있는 스프링 프레임워크의 사용때문에 이런 규칙을 대부분의 개발자들은 준수한답니다. 아니 거의 100% 준수한다고 하실 수 있어요!











댓글

Designed by JB FACTORY