Program/Java Programming

생성자(constructor)

Hue Kim 2012. 9. 23. 03:37

생성자는 

1. 반드시 클래스의 이름과 같으며 반드시 public 으로 선언한다.

2. 생성자는 반환값(return)이 없다. 생성자를 정의할때 void를 사용하지 않고 반환형의 자리를 비워둔다.

3. 생성자 메소드는 new 연산자로 객체를 생성할 때만 호출되며 다른 경우에는 사용자가 직접 호출할 수 없다.

4. 생성자는 주로 인스턴스 변수를 초기화하는데 사용한다.

5. 한 클래스 내에 서로 다른 매개변수를 가진 여러 생성자를 정의할 수 있다. 즉, 생성자 중복이 가능하다.

6. 클래스에서 생성자가 정의되어 있지 않으면 매개변수가 없는 생성자가 자동으로 생성되어 사용될 수 있다.

7. 개발자가 매개변수가 있는 생성자를 하나라도 정의하는 경우는 매개변수가 없는 생성자를 반드시 정의하여야 매개변수가 없는 생성자를 사용할 수 있다.

8. 상위 클래스에 정의된 생성자를 하위 클래스에서 재정의할 수 없다. 즉, 생성자 치환은 허용되지 않는다. 메소드 치환은 후에 다시 언급하겠다.


class Person {
//Person 클래스를 정의한다.
	String name;
	int age;
	//변수로 name, age를 선언한다.
	
	Person(){
	//매개변수가 없는 생성자를 정의한다. 생성자의 이름은 클래스의 이름과 동일해야한다.
		name = "Tom";
		age = 10;
	}
	
	Person(String n, int a){
	//매개변수가 있는 생성자를 정의하여 name,age에 각각 매개변수의 값을 할당한다.
	//동일한 이름의 생성자가 2개있기때문에 이를 중복(Overloading)이라한다.
		name = n;
		age = a;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person J,T;
		
		T = new Person();
		System.out.println("이름 : "+T.name+" 나이 :"+T.age);
		//Person()  매개변수가 없는 생성자를 호출, 변수값 기본값
		
		J = new Person("Julie",19);
		System.out.println("이름 : "+J.name+" 나이 :"+J.age);
		//Person(String n, int a) 매개변수가 있는 생성자를 호출하여 매개변수로 초기화한다.
	}

}

이름 : Tom 나이 :10

이름 : Julie 나이 :19