2010. 7. 7. 00:08
자바 생성자(Constructor)와 오버로딩(Overloading)
2010. 7. 7. 00:08 in ICT와 AI 정보
처음에 클래스를 만든 후 객체를 생성함으로써 그것을 사용할 수 있다. 이렇게 `객체의 인스턴스(instance)`를 생성하는 것은 메모리의 Heap 영역에 클래스를 위한 공간을 확보하기 위한 과정이다. 이렇게 하려면 `생성자(constructor)`라는 것을 호출해야 되는데, 기본 자료형 변수 선언과 같이 사용자가 만든 `클래스 형`변수를 선언한다고 생각하면 된다. 이미 앞에서 해본 바 대로다.
클래스명 클래스변수명 ;
클래스 변수명 = new 클래스 명() ;
예를 들어, 도서에 대한 객체를 'Book'이라는 이름의 클래스로 다음과 같이 만들었다고 하면 ,
이 것을 한 줄로 줄여 Book book = new Book() ; 으로 해도 되는데 이처럼 클래스에 대한 변수선언과 동시에 생성할 수도 있고, 위에서와 같이 선언먼저 해놓고 나중에 필요한 시점에 따로 생성해도 된다. 어쨌든 생성자를 호출한 이후부터 사용이 가능하고, 자바는 반드시 이 과정을 거쳐야 된다.class Book {
String title ;}
//그 객체 생성은 다음과 같다.
Book book ;book = new Book() ;
정리해보면 생성자란 클래스 이름과 같고 객체생성시 꼭 호출되어야 하는 특별한 메소드이다. 하지만, 우리가 Book()이라는 메소드를 정의한 적이 없는데도 호출할 수 있는 것은 일단 클래스가 만들어지면 그와 동일한 이름을 가지는 메소드(생성자)가 자동으로 생기기 때문이다. 우리는 사용하기 위해 호출을 해주면 된다.
하 지만, 기본적으로 생기는 생성자외 사용자의 편리에 의해 다른 형태의 생성자를 직접 만들 수도 있는데, 자바의 특성이자 여러가지 장점이 있다. 어떨때에는 반드시 이렇게 해야하는 경우도 생긴다. 클래스를 하나 더 만들어 보자.
이 경우 객체를 생성할때 다음과 같이 반드시 매개변수(파라메타) 값을 명시해야 한다. Book book = new Book("자바 프로그래밍") ;이와 같이 개발자가 직접 생성자를 만들게되면 아무런 매개변수가 없는 기본생성자는 자동으로 생성되지 않아 더이상 사용할 수 없게 됨을 유의해야 한다.class Book {
String title ;Book(String str) {title = str ;}}
기본생성자도 필요하기 때문에 따라서, 매개변수가 없는 생성자도 아래와 같이 하나 만들어 두어야 한다. 생성자는 여러개 만들 수 있다. '오버로딩(over loading)' 개념으로 메소드 이름은 같고 원형이 다른 형태이다.
class Book {
String title ;Book() {}
Book(String str) {title = str ;}}
'ICT와 AI 정보' 카테고리의 다른 글
자바(Java) 배열(Array), 해쉬테이블(Hashtable), 그리고 벡터(Vector) (0) | 2010.07.07 |
---|---|
자바(Java) 의 접근 제어 (0) | 2010.07.07 |
자바(Java) 추상 클래스(Abstract Class)와 인터페이스(Interface) (0) | 2010.07.07 |
자바(Java)의 `상속`과 다형성(Polymorphism) (0) | 2010.07.07 |
자바(Java)의 객체지향(OOP) 프로그래밍 기초개념 (0) | 2010.07.06 |
서브넷 마스크 세번째 후리기 (0) | 2010.05.22 |
서브넷 마스크 후리기 2 (0) | 2010.05.21 |
서브넷 마스크 후리기 (0) | 2010.05.20 |