반응형

클래스를 인트턴스화 할 시에, 클래스 내의 값을 초기화가 필요한 경우가 있습니다.

이럴 때 생성자를 이용하여 값을 초기화할 수 있습니다.

 

생성자의 정의

  • 작성한 클래스를 인스턴스화 하여 객체를 생성할 때 사용됨.
  • 생성된 객체의 변수를 초기화할 때 사용
  • Return 값이 없으며, 클래스명(매개변수)으로 사용됨
  • 메소드와 비슷한 형태로 사용 가능하며 오버로딩 또한 가능.

 

사용법

클래스명{

   클래스명(매개변수){
   
   
   }
}

위와 같은 형태로 사용 가능하며

매개변수를 생략할 수 있습니다.

 

보통 클래스를 생성할 때

클래스명 변수명 = new 클래스명();

 

위의 같은 형태로 사용하게 되는데요.

생성자는 위의 클래스와 같은 이름을 갖는 메소드의 형태로

인스턴스화 할 때 같이 실행되어 기능을 수행하게 됩니다.

 

예제 소스

class hiter  {
	
	int tmp = 0;
	String user = "";
	
	hiter(){ //생성자1
		tmp = 10;
	}
	
	hiter(int val){ //생성자2
		tmp = val;
	}
	
	hiter(int val, String usr){ //생성자3
		tmp = val;
		user = usr;
	}
	
	void onDevice(){
		System.out.println("히터의 현재온도 : "+tmp);
		if(!user.equals("")) {
			System.out.println("작동자 : "+user);
		}
	}
	
}

public class my_home{

	public static void main(String[] args)  {

		hiter hit = new hiter(); 
		hit.onDevice();
		
		System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡ");
		
		hiter hit_tmp = new hiter(200);
		hit_tmp.onDevice();
		
		System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡ");
		
		hiter hit_tmp_usr = new hiter(200, "이순신");
		hit_tmp_usr.onDevice();
		
	}
}

 

 

소스 결과

hiter hit = new hiter()

위와 같이 수행하면 클래스 내의 hiter메소드가 

인스턴스화와 동시에 실행됩니다.

 

그래서 클래스 내의 온도 변수에 값을 할당(초기화) 하게 되고

온도 출력 메소드를 실행하면 해당 값을 출력하게 됩니다.

 

생성자의 메소드 오버로딩

생성자는 일종의 메소드와 같다고 설명드렸는데요.

 

이전에 배운 메소드 오버로딩은 생성자에게도 동일하게 적용됩니다.

 

위의 소스에 보시면

같은 이름의 hiter메소드가 매개변수가 다른 형태로 여러 개 있는 것을 확인할 수 있습니다.

 

그리고 매개변수를 다르게 지정하여 해당 클래스를 객체화시키고

온도 출력을 하게 되면 각기 다른 형태의 값을 출력하는 것을 확인할 수 있습니다.

반응형

+ Recent posts