1.생성자


생성자는 객체가 생성될 때 읽을 메소드를 말한다.


메서드의 이름은 클래스와 이름을 똑같이 쓰며 매개변수를 설정하여 구현할 수 있다.


일반적으로 객체 생성시에 변수, 필드값들을 초기화 할 때에 많이 사용된다.




2.오버로드


메소드를 선언 할 때에는 매개변수를 설정하는데 종종 입력받은 매개변수가 유동적으로 바꿔야 할 필요가 있다.


물론 이름을 다르게 쓰면 문제가 없지만 사용자가 불편해지고, 또 메소드가 너무 많아지게 된다.


그러한 불편한 점을 해결하기 위한 기능이 오버로드다.


메소드의 이름은 똑같게 설정하고 매개변수는 다르게 설정한다던가 반환타입을 다르게 한다던가


예를들어 plus라는 덧셈 메소드를 만든다고 할 때에 인자를 2개 받는다고 치자.


public int Plus(int a, int b){

return a+b;

}


위와같이 쓰는데 더하기를 할 때에 소수도 들어가고 Int의 최대값인 2147483647 보다 더 큰 수가 들어갈 수도 있다.


그래서 오버로드를 사용하면


public double Plus(double a, double b){

return a+b;

}


위와같이 하면 double 타입도 무사히 덧셈을 할 수 있다.


경우에 따라서 오버로드를 잘 써주면 사용자가 매우 편리해진다.


생성자도 몰론 메소드 개념이므로 활용이 가능하다.


아래의 예제를 보고 이해해보자.



package chap04.exam03.constr;

public class Robot {
	public static int num = 1;
	public String name;
	public String goal;
	public String number;
	
	public Robot(String name, String goal) { // 객체화하면 생성자가 가장 먼저 실행 됨
		
		System.out.println("로봇 생성");
		// 초기화, 원래는 this를 사용해야 함
		name = name;
		goal = goal;
		
		number = "로봇 " + num + "호";
		System.out.println(number);
		num = num + 1;
		
	}
	// 생성자 오버로드 : 다양한 방법으로 객체 생성 가능
	// 오버로딩은 철저히 사용자의 편의를 위해 만들어짐
	// 인자값의 수나 타입이 달라야 함
	public Robot(String name) {
		System.out.println("로봇 생성");
		name = name;
		
		number = "로봇 " + num + "호";
		System.out.println(number);
		num = num + 1;
	}
	public Robot() {
		System.out.println("로봇 생성");
		name = name;
		
		number = "로봇 " + num + "호";
		System.out.println(number);
		num = num + 1;
	}

}


package chap04.exam03.constr;

public class Main {

	public static void main(String[] args) {
		Robot robot = new Robot("로오봇", "계산기");
		Robot robot2 = new Robot("건설로봇", "자동차 제작");
		Robot robot3 = new Robot();
		Robot robot4 = new Robot("건설로봇 2");
	}

}


+ Recent posts