SW 배움터/안드로이드

안드로이드 8: 컨스트럭터(생성자)

kusson 2017. 6. 16. 14:37
반응형
728x170

 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 컨스트럭터(생성자)라고 한다. 컨스트럭터는 객체가 처음 생성될 때 호출되어 멤버변수를 초기화 하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성시에 호출되므로 컨스트럭터(생성자)라는 이름이 붙었다. 컨스트럭터는 대체로 메서드와 같은 모양을 하고 있지만, 값을 반환하지 않는다는 점에서 엄밀한 의미의 메서드(함수)는 아니다.

 

 컨스트럭터는 객체의 생성과 동시에 자동으로 호출되므로 멤버변수(필드)를 초기화 하는데 사용할 수 있다고 했다. 이렇게 멤버변수의 초기화가 필요한 이유는 객체 생성시 컨스트럭터를 필수적으로 호출해야 하기 때문에 한가지 과정을 절약한다는 의미가 있다. 컨스트럭터에도 인수가 없는 컨스트럭터와 인수가 있는 컨스트럭터가 있어서 구분을 해줘야 한다.

 

1. 인수가 없는 컨스트럭터

 class Animal{

    int a, b, c;

       Animal( ){                             //Animal( )은 컨스트럭터

           a = 0;

           b = 0;

           c = 0;

         }

 }

 

 

 class cat{

       ...............

      Animal cat = new Animal():               //cat 객체 생성시에 자동으로 컨스트럭터를 호출한다.

       ................

  }

 

2. 인수가 있는 컨스트럭터

  class Study{

     int a, b, c;

       Study(int a, int b){                            //Study( )는 컨스트럭터

         s = a;

         t = b;

       }

   }

 

 

  class math{

      ...............

     Study math = new Study(3, 5):                //math 객체 생성시에 자동으로 컨스트럭터를 호출한다.

      ................

  }

 

3. 오브로드는 하나의 클래스 안에 인수의 수나 형이 다른 동일한 이름의 메서드를 여러개 기술하는 것을 말하는데 이때도 컨스트럭터가 호출된다.

 

class Math{

  int sum(int a, int b){     //

      return a+b;

  }

 

  int sum(int a){            //

      return a;

  }

 

  int sum(double a, double b){      //

      return a + b;

  }

}

 

위에서 오브로드한 메서드를 호출할 때는 인수의 이름과 수, 형을 지정하면 대응하는 메서드를 찾아 적용해 준다.

 

sum(2, 7);   //메서드의 이름은 같아도 인수의 수와 형에 따라 맞는 것을 적용한다.

               //이경우는 인수가 2개의 정수이므로 ①을 적용한다.

 

반응형
그리드형