JAVA/이론

[JAVA] [OOP] 생성자 ( Constructor ) 에 대하여

printf100 2019. 11. 27. 21:04

생성자 ( Constructor ) 란 ?

객체를 생성하고, field를 초기화하기 위한 메소드

 

  • 클래스명과 이름이 동일하고, 리턴타입이 없습니다.

class Test {
	public Test() {}	// 생성자입니다.
}

 

  • new 연산자와 함께 사용됩니다.

Test t = new Test();

 

  • 기본 생성자는 생략하면 자동으로 생성됩니다.

  • 매개변수를 갖는 생성자를 정의하면 기본 생성자는 더 이상 자동으로 만들어지지 않습니다.

public class AA {
			// new AA();
}

public class BB {
	public BB() {}	// new BB();
}

public class CC {
	public CC(int cc) {}	// new CC(); (X)
    				// new CC(10); (O)
}

 

  • 생성자는 상속되지 않습니다.

  • 다만, 자식클래스의 생성자 호출 시 부모클래스의 생성자 또한 호출됩니다.

public class Test {

	public Test() {
    	System.out.println("기본 생성자입니다.");
    }
    
    public Test(int i) {
    	System.out.println("매개변수를 갖는 생성자입니다.");
    }
    
    public static void main(String[] args) {
    
    	Test tDefault = new Test();
        Test tParameter = new Test(10);
    }
}

실행 결과

 

 

기본 생성자 ( Default Constructor )

  • 클래스 이름과 동일, 리턴타입 없음, 접근제한자는 public

파라미터가 있는 생성자 ( 오버로딩 )

  • 파라미터의 타입이나 갯수를 다르게 하여 다른 일을 하게 한다.

class Test {
	// 기본 생성자 (default constructor)
	public Test() {}
    
    	// 파라미터가 있는 생성자
    	public Test(int a) {}
    	public Test(int a, int b) {}
}