생성자
tc라는 객체를 생성할 때 new연산자 다음의 TestClass()를 생성자라 한다.
TestClass tc = new TestClass();
지금까지 객체를 생성할 때 아무렇지도 않게 이렇게 객체(인스턴스)를 생성했다. 하지만 new연산자 뒤의 생성자는 어디서 정의 한 것일까? 이는 컴파일러에서 정의된 생성자가 없다면 자동으로 정의해준다. 빈생성자만을 정의 해준다. 하지만 이렇게 빈 생성자를 선언해서 객체를 생성한다면 멤버변수를 따로 초기화 해줘야한다는 불편함이 존재 했었다. 그래서 그러한 문제점을 제거하기 위해 직접 생성자를 선언하면 좋다.
주의할 점
정의된 생성자가 있을 경우 컴파일러는 빈 생성자를 따로 정의해 주지 않는다. 이렇게 떄문에 생성자를 선언하고 필요에 따라 빈 생성자도 따로 선언해 줘야 한다.
예제
package test;
import java.util.Scanner;
class Person {
int age;
String name;
int height;
int weight;
public Person(){
}
public Person(int age){
this.age = age;
}
public Person(String name){
this.name = name;
}
}
public class test {
public static void main(String[] args) throws Exception {
Person p1 = new Person();
System.out.println("p1.age = " + p1.age + ", p1.name = " + p1.name + ", p1.height = " + p1.height + ", p1.weight = " + p1.weight);
Person p2 = new Person(20);
System.out.println("p2.age = " + p2.age + ", p2.name = " + p2.name + ", p2.height = " + p2.height + ", p2.weight = " + p2.weight);
Person p3 = new Person("Lee Shin");
System.out.println("p3.age = " + p3.age + ", p3.name = " + p3.name + ", p3.height = " + p3.height + ", p3.weight = " + p3.weight);
}
}
결과
p1.age = 0, p1.name = null, p1.height = 0, p1.weight = 0
p2.age = 20, p2.name = null, p2.height = 0, p2.weight = 0
p3.age = 0, p3.name = Lee Shin, p3.height = 0, p3.weight = 0
'웹 프로그래밍 > Spring Framework' 카테고리의 다른 글
[JAVA] 회원관리 시스템 / 응용 코드 (0) | 2014.06.08 |
---|---|
[JAVA] this() 생성자(코드의 간결함을 위한!) (0) | 2014.06.08 |
[JAVA] 정적 메소드와 인스턴스 메소드(Static Method and Instance Method) (0) | 2014.06.08 |
[JAVA] 메소드 오버로딩(Method Overloading) (0) | 2014.06.08 |
[JAVA] 가변 인자 메소드(Variable Method) (0) | 2014.06.08 |