'클래스 생성자'에 해당되는 글 1건

  1. 2016.12.04 자바 생성자에 대해서 알아보자 1
2016. 12. 4. 21:22

자바 생성자에 대해서 알아보도록 하겠습니다.

 

생성자라고 하면, 자바는 객체를 선언해야 사용할 수 있습니다.

객체를 선언할때 처음으로 불려지는 메소드로 생각 하시면 될것 같습니다.

 

생성자를 선언할때 조건이 있습니다.

그 조건에는 아래와 같습니다.

 

1. 생성자 선언 조건

  - 생성자의 이름은 클래스 이름과 동일해야 합니다.
  - return값이 없습니다.
  - 생성자는 생략이 가능 합니다.
    하지만, 생성자가 없는 클래스에 대해 컴파일러는 기본 생성자를 생성 합니다.

  - 특별한 경우가 아니면 접근 지정자는 기본적으로 public 이지만, 외부에서 직접 객체 생성을 못하도록 

     하고 하는 경우에는 private 또는 protected 사용 합니다. 

     ( 추상 클래스 및 static멤버만 가진 클래스 / 싱글톤 클래스) 

  - 생성자는 매개변수를 지정해서 만들수 있습니다.

[출처] <자바>생성자|작성자 programer

 

2. 생성자 샘플  - 1

>> Common java

package com;

 

public class Common { 

        String gubun ="";

        int status = 0;

       

        //매개변수가 없는 생성자

        Common(){

               System.out.println("생성자!!!");

        }

            //매개변수가 있는 생성자

        Common(String str){

               gubun = str;

               System.out.println("생성자!!!");

        }

            //매개변수가 있는 생성자

        Common(String str , int num){

               gubun = str;

               status = num;

        }

       

}

 

  >> Common java 파일에는 생성자가 3개가 있습니다.
       1. Common() 인자값이 없는 생성자이며, 생성자!!!를 출력합니다.
       2. Common(String str) str인자값을 받는 생성자이며, 입력받은 str을 gubun 변수에 대입합니다.
          또한, 생성자!!!를 출력 합니다.
       3. Common(String str , int num) str인자값 및 num값을 받는 생성자 이며, 입력받은 str은 gubun 변수에
          대입하고, num은 status에 대입합니다.

       4. 접근지정자가 없을경우 기본적으로 public 으로 지정됩니다.

>> Test java

package com;

 

public class Test {

        public static void main(String[] args) {

 

              /*Common이란 클래스를 aa 객체로 생성함.

                생성시 Common() 생성자를 호출함.*/

               Common aa = new Common(); 


              /*Common이란 클래스를 bb 객체로 생성함.

                생성시 Common(String str) 생성자를 호출함 */

               Common bb = new Common("TEST");


              /*Common이란 클래스를 cc 객체로 생성함.

                생성시 Common(String str , int num) 생성자를 호출함 */

               Common cc = new Common("TEST", 1);

              

        }

}

 

 

  >> Test java 파일은 main메소드가 있으며, 실행시 객체 aa , bb , cc 를 생성 합니다.
       동일한 자바를 생성하지만, 각각다른 객체를 생성 합니다.
       또한, 생성시 생성자를 다르게 호출하여 기본값을 셋팅 합니다.


3. 생성자 샘플 -2 

>> Common java

package com;

 

public class Common { 

        String gubun ="";

        int status = 0;

        //매개변수가 없는 생성자

        Common(){

               this("aa"); //common(String str) 생성자를 호출함.

               System.out.println("생성자!!!");

        }

        //매개변수가 있는 생성자

        Common(String str){

               this(str,10); // Common(String str , int num) 생성자를 호출함.

               System.out.println("생성자!!!");

        }

        //매개변수가 있는 생성자

        Common(String str , int num){

               //변수앞에 this를 붙이면 해당 클래스의 선언된 변수를 의미 합니다.

               this.gubun = str

               status = num;

        }

}

 

  

  >> Common java 파일은 생성자에서 다른 생성자를 호출하는 코딩을 했습니다.

       생성자에서 다른 생성자를 호출할 경우 this를 사용하며, 생성자의 맨 첫번째 줄에 코딩이 되야 합니다.

       이유는 생성자 내에서 값에 대한 초기화를 진행 하는데 다른 생성자에서도 값을 조기화 하는 부분을 

       막기 위함입니다.

       Common aa = Common(); 으로 객체를 생성할 경우 common() 생성자가 호출되고 this("aa")를 만나

       Common(String str) 생성자를 호출되고 this(str,10)를 만나 Common(String str , int num) 생성자를 

       호출하게 됩니다.


4. 정리
  - 생성자는 객체 생성시 무조건 한번 호출됩니다.
  - 생성자는 리턴 값이 없습니다.
  - 생성자는 인자값을 다르게 하여, 여러개 선언 할 수 있습니다.
  - 생성자의 이름은 클래스 이름과 동일해야 합니다.
  - 생성자를 통해 변수 초기화를 쉽게 할 수 있습니다.

  - 생성자에서 다른 생성자를 호출할 경우 this를 사용합니다.

  - this를 사용할 경우 생성자의 맨 첫번재 줄에 코딩이 되야 합니다.


다음에는 메소드에대해서 알아보도록 하겠습니다.

 

Posted by dlfma1985