java에서는 클래스의 생성자는 생략이 됩니다.
유명한 HelloWorld 소스입니다.
package net.okjsp;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World"); }
}
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World"); }
}
이 유명한 소스에서 HelloWorld() 부분이 생략된 것이죠.
package net.okjsp;
}
public class HelloWorld {
public HelloWorld() {
}
public static void main(String[] args) {
System.out.println("Hello World");
}
메소드처럼 ()은 붙어있지만, 리턴 타입이 없습니다. 바로 클래스 자신의 타입을 리턴하기 때문이죠.
언제 호출이 될까요. 바로 new 로 인스턴스를 만들 때입니다. 다음 소스를 실행해보세요.
package net.okjsp; public class HelloWorld {
public HelloWorld() {
System.out.println("생성자 호출");
}
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.printOut();
}
public void printOut() {
System.out.println("Hello World");
}
}
public HelloWorld() {
System.out.println("생성자 호출");
}
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.printOut();
}
public void printOut() {
System.out.println("Hello World");
}
}
결과는 다음과 같습니다.
생성자 호출
Hello World
Hello World
파라미터를 준 생성자가 등장한다면 얘기는 흥미진진해집니다. 자바 스펙이라도 한 번 봐두면 좋을 듯 하네요.