시소당
처음에 클래스를 만든 후 객체를 생성함으로써 그것을 사용할 수 있다. 이렇게 '객체의 인스턴스'를 생성하는 것은 메모리의 Heap 영역에 클래스를 위한 공간을 확보하기 위한 과정이다. 이렇게 하려면 '생성자(constructor)'라는 것을 호출해야 되는데, 기본 자료형 변수 선언과 같이 사용자가 만든 '클래스형'변수를 선언한다고 생각하면 된다. 이미 앞에서 해본바대로다.
클래스명 클래스변수명 ;
클래스 변수명 = new 클래스명() ;
예를 들어, 도서에 대한 객체를 'Book'이라는 이름의 클래스로 다음과 같이 만들었다고 하면 ,
class Book {
String title ;
}
그 객체 생성은 다음과 같다.
Book book ;
book = new Book() ;
이것을 한 줄로 줄여 Book book = new Book() ; 으로 해도 되는데 이처럼 클래스에 대한 변수선언과 동시에 생성할 수도 있고, 위에서와 같이 선언먼저 해놓고 나중에 필요한 시점에 따로 생성해도 된다. 어쨌든 생성자를 호출한 이후부터 사용이 가능하고, 자바는 반드시 이 과정을 거쳐야 된다.
정리해보면 생성자란 클래스 이름과 같고 객체생성시 꼭 호출되어야 하는 특별한 메소드이다. 하지만, 우리가 Book()이라는 메소드를 정의한 적이 없는데도 호출할 수 있는 것은 일단 클래스가 만들어지면 그와 동일한 이름을 가지는 메소드(생성자)가 자동으로 생기기 때문이다. 우리는 사용하기 위해 호출을 해주면 된다.
하지만, 기본적으로 생기는 생성자외 사용자의 편리에 의해 다른 형태의 생성자를 직접 만들 수도 있는데, 자바의 특성이자 여러가지 장점이 있다. 어떨때에는 반드시 이렇게 해야하는 경우도 생긴다. 클래스를 하나 더 만들어 보자.
class Book {
String title ;
Book(String str) {
title = str ;
}
}
이 경우 객체를 생성할때 다음과 같이 반드시 매개변수(파라메타) 값을 명시해야 한다.
Book book = new Book("자바 프로그래밍") ;
이와같이 개발자가 직접 생성자를 만들게되면 아무런 매개변수가 없는 기본생성자는 자동으로 생성되지 않아 더이상 사용할 수 없게 됨을 유의해야 한다. 기본생성자도 필요하기 때문에 따라서, 매개변수가 없는 생성자도 아래와 같이 하나 만들어 두어야 한다. 생성자는 여러개 만들 수 있다. '오버로딩(over loading)' 개념으로 메소드 이름은 같고 원형이 다른 형태이다.
class Book {
String bookTitle ;
Book() {
}
Book(String str) {
title = str ;
}
}
[출처] 자바 - 생성자(Constructor), 오버로딩|작성자 남방주작
http://blog.naver.com/phoenix208?Redirect=Log&logNo=40030559459