기타/프로그래밍 분류

Java - 15.생성자

zelkova 2011. 7. 1. 15:46

생성자는 클래스의 인스턴스를 생성할 때만 호출되는 메서드로 인스턴스에 대한 메모리를 할당함과 동시에 필드의 값을 초기화 하는 역할을 한다.
생성자는 클래스에 위치하는 메서드이다. 따라서 식별자의 이름이 필요한데 생성자의이름은 항상 클래스의 이름과 일치해야 한다. 만약 임으로 클래스의이름과 다른 이름의 생성자를 만들면 이것은 해당 클래스의 일반 메서드가 된다. 따라서 생성자 본연의 기능을 사용하려면 반드시 생성자의 이름과 클래스의 이름이 같아야 한다.

사용방법
1.new 클래스명()
생성자를 기술하지 않을 경우 컴파일러가 자동으로 default 생성자를 생성한다.

public class TestClass{
   public static void main(String[] args){
      new TestClass;
   }
}

결과) //JVM이 컴파일 한것을 JAD응용프로그램으로 역컴파일한 과정
public class TestClass{
   public TestClass{
   }
   public static void main(String[] args){
      new TestClass;
   }
}


2.[클래스명][클래스이름지정] = new [클래스명]()
public class TestClass{
Private int a,b;
   public TestClass(){
      this.num1 = 10;
      this.num2 = 20;
   }
   public static void main(String[] args){
      TestClass className = new TestClass(); //죄송 제 작명센스가 그지라서 ㅡㅡ;;
   }
}
여기서 이상한 것을 볼 수 있다.
함수 같은데 클래스와 이름이 비슷하고, static변수를 자기맘대루 바꾸는 황당한 놈이 눈에 띈다.
이것은 클래스를 인스턴트화할때 끼워넣는 설정변수라고 생각하면된다.
쉽게 말해서 클래스라는 공장에서 인스턴스라는 자판기를 찍어낼때 음류수 10칸을 진열하게 할지 20개를 진열하게 할지 설정하는 놈이라고 생각하면 된다.

3.[클래스명][클래스이름지정] = new [클래스명](변수,변수)
public class TestClass{
Private int a,b;
   public TestClass(int num1,int num2){
      this.num1 = num1;
      this.num2 = num2;
   }
   public static void main(String[] args){
      TestClass className = new TestClass(10, 20); //죄송 제 작명센스가 그지라서 ㅡㅡ;;   }
}

요녀석은 클래스를 인스턴트화 할때 변수를 유동적으로 설정할 수 있게 해주는 상큼한 녀석이다!

반응형

'기타 > 프로그래밍 분류' 카테고리의 다른 글

JAVA - 17.오버라이드,오버로드  (0) 2011.07.02
JAVA - 16.상속  (0) 2011.07.02
Java - 14.패키지  (0) 2011.07.01
JAVA - 13.접근제어  (0) 2011.06.30
Java - 12.Static과 메모리 구조  (2) 2011.06.30