본문 바로가기

LECTURE/# java basic

[초급 JAVA]자바 생성자로 초기화 하고 코딩하기/JAVA Constructor

반응형

자바 생성자로 초기화 하고 코딩하기

By Commin November 8, 2016


이번 포스팅에서는 자바의 생성자에 대하여 이야기 해 볼까 합니다. 생성자는 무엇일까요?

생성자란?

한국말대로 해석하자면 무엇인가 만들어질 때 뭔가를 하는 놈 이라고 해석됩니다만, 모든 프로그래밍 언어가 한국말로 번역되어 들어 올 때 본 의미와는 상관 없이 또는 뭔가 어긋나게 된 것이 많습니다. 생성자 또한 그런 단어 중 하나입니다. 영어로는 Constructor . 그렇습니다 건설하는 사람/기계 등을 지칭하는 단어입니다. 즉 프로그래밍에서 Constructor는 어떤 프로그램의 기초를 건설하고 다지는 역할을 합니다. 다시말해 프로그램의 시작 단계에서 어떠한 변수등을 초기화 시켜주는 역할을 함으로써, 프로그램의 기초를 다져줍니다. 그럼 어떻게 생성자를 사용 할까요?

생성자의 활용

 
ExamConstructor.java
package constructor;
public class ExamConstructor {
private int x,y;
public void setXY(int x , int y){
this.x = x;
this.y = y;
}
public void printXY(){
System.out.println("X 좌표 : "+ x + "\nY 좌표 : "+y);
}
public static void main(String [] ar){
ExamConstructor constructor = new ExamConstructor();
constructor.printXY();
constructor.setXY(10, 20);
constructor.printXY();
}
}

ExamConstructor.java 라는 자바파일을 만들고 좌표를 넣어주면 그대로 화면에 출력하는 프로그램을 만듭니다. 저번 시간에 배웠던 class 객체를 만들어서 ExamConstructor 안의 setXY()함수에 접근하여 사용합니다. setXY함수를 보니, 인자로 x 와 y를 받아 전역 변수인 x 와 y에 값을 넣어주는 역할을 하네요.

잠깐, 못보던 녀석이 등장했습니다. 바로 this 입니다. this 란 무엇일까요?

this 란?


다시 본론으로 돌아 와서, printXY() 함수의 역할은 전역변수 x 와 y를 이용하여 X좌표와 Y좌표를 콘솔창에 출력하는 역할 입니다. main 함수에서는 처음에 ExamConstructor의 객체를 constructor 라는 이름으로 생성하고, 객체를 이용하여 printXY()함수를 실행 시킵니다. 그럼 결과는 ? 전역변수에 아무 값을 넣어주지 않았으니, 전역변수(Integer) 의 초기값인 0 이 출력 되겠죠? 

"X 좌표 : 0   Y 좌표 : 0"

그러면, setXY() 함수에 인자 10과 20을 넣으면 전역변수 x와 y는 10 과 20으로 setting이 되고 다시 printXY()함수를 실행하면,

"X 좌표 : 10   Y 좌표 : 20"

이렇게 출력이 됩니다. 

만약, 이 프로그램이 시작될 때 X 와 Y의 좌표가 10과 20으로 시작 되어야 한다면, 코더는 시작 할 때 항상 setXY() 함수를 신경 써야 하며, printXY 함수가 시작되기 전에 setXY를 한번 실행해줘야 한다는 사실도 기억하고 있어야 합니다. 이렇게 되면, 코더는 불편하고 또 실수하여 오류를 초래 할 수도 있습니다. 이럴때 생성자를 이용하여 초기화해주는 작업을 하면 코딩이 한결 수월 해 집니다.

 
ExamConstructor.java
package constructor;

public class ExamConstructor {

private int x,y;

ExamConstructor(int x , int y){

this.x = x;
this.y = y;
}
private void printXY(){
System.out.println("X 좌표 : "+ x + "\nY 좌표 : "+y);
}
public static void main(String [] ar){

ExamConstructor constructor = new ExamConstructor(10,20);

constructor.printXY();
}
}

ExamConstructor를 이렇게 한번 바꿔봅시다. constructor 라는객체를 만들 때 new 를 사용하여 ExamConstructor의 인스턴스를 생성하는데, 이 때 x와 y좌표의 값을 입력하도록 강제하는 것이 생성자의 역할 입니다.

1
2
3
4
public ExamConstructor(int x , int y){
        this.x = x;
        this.y = y;
    }

cs

이것이 생성자입니다. public 이라는 접근제한자는 모든 경로에서 이 함수의 접근을 허용하는 개방적인 접근제한자이며, 생성자의 Default 값입니다. 생략도 가능합니다. 형식은 

public 클래스이름(매개변수){ 코딩 }

입니다. 매개변수를 달리하면 여러개를 만들 수 있습니다. 또한 어떠한 값도 반환 하지 않습니다. 만약 반환하면 객체를 만들때 값이 이상해 질 수 있기 때문입니다. 

이렇게 생성자를 만들어 코딩을 하니 코딩 수도 간결해지고, 객체를 만들 때 반드시 값을 넣어주어야 하니 코더의 의도대로 값을 초기화 시키고 넘어가야만 하는 객체가 된것을 확인 할 수있습니다. 

다음은 지금까지 배운 내용으로 간단한 프로그램을 만들면서 점검하는 시간을 가지도록 하겠습니다.

지금 이해안가는 부분은 같이 프로그램을 만들면서 이해해보도록 합시다.



반응형