특수 생성자

 

 

 

Ø Private 생성자
l 생성자에 private 접근 제한자를 붙인면, 인스턴스를 생성할 수 없게 만든다.
l 수학 함수 처럼 인스턴스가 없이 메소드만 사용하고 싶은 경우 사용한다.

 

 

Ø Static 생성자
l 인스턴스 만들지 않고 class를 직접 사용하는 경우의 초기화 메소드

 

 

 

 

 

생성자 초기화 리스트

 

 

 

using System;

class Circle

{

      public double radius;

   public Circle() : this(1.0) {}

    // this(1.0) : Circle()라는 생성자가 Circle(1.0)과 같은 기능을 하게 됨을 지정함

      // this(1.0) 이런식의 사용은 생성자 외의 다른 메소드에서 사용할 수 없다.

 

   public Circle(double r)

   {

  this.radius = r;

   }

}

 

 

 

 

생성자 오버로딩 예제(2)

 

 

class Program

{

  public static void Main()

  {

  Circle circle1 = new Circle();

  Circle circle2 = new Circle(100.0);

  }

}

 

 

 

 

 

 

 

생성자 오버로딩 예제(1)

 

 

 

 

using System;

class Circle

{

      public double radius;

 

 public Circle() //오버로딩 됨

 {

  this.radius = 1.0;

 }

 public Circle(double r)  //오버로딩 됨

 {

  this.radius = r;

 }

}

 

 

 

 

생성자 (Constructor) (2)

 

 

 

 

Ø 인스턴스 생성자
l 기본 생성자가 하지 않는 일을 생성자에서 해야 할 때, 클래스와 동일한 이름을 가지는 메소드를 오버라이딩하여 사용한다.
l 생성자 메소드가 있으면 기본 생성자는 호출되지 않는다.
l 다양한 인자를 가진 여러 개의 생성자를 오버로딩 할 수있다. (다음 페이지 예제)
l 읽기 전용 필드를 생성자가 초기화 할 수 있다.

 

 

 

 

 

 

생성자 (Constructor) (1)

 

 

 

Ø기본 생성자

Class1 object = new Class1();

객체를 선언함 =  객체 생성,  생성자로 객체 초기화

 

 

l생성자는 클래스와 동일한 이름을 가지는 메소드
l생성자 메소드가 없으면 기본 생성자가 사용됨
l기본 생성자의 접근제한은 public이며, 인자가 없고, 리턴값이 없다.
l필드를 0/false/null 으로 초기화 해줌

 

 

 

 

 

클래스 lifecycle

 

 

 

ØBirth
linstance 생성
lConstructor 메소드가 관여함

 

ØLiving
l멤버 변수와 메소드를 이용함

 

ØDeath
lInstance 파괴를 위한 행동
lDestructor 메소드가 관여

 

ØGarbage collection
l죽은 객체가 사용하던 메모리를 반환시킴

 

 

 

 

 

 

 

public static Main 메소드

 

 

 

 

Ø main 메소드

public static void Main( string[ ] args )

 

l public은 모든 클래스에서 Main( ) 메소드에 접근할 수 있다는 의미이고, staticMain( ) 메소드가

    속해 있는 클래스에 대한 객체를 생성하지 않고도 Main( ) 메소드를 호출할 수 있음을 의미한다.

 

l 프로그램을 실행시키는 어떤 부분이 Main( ) 메소드가 포함되어 있는 클래스의 인스턴스를 만들지 않고,

       Main( ) 메소드를 호출하기 위해서이다.

 

l 당연히 외부에서 메소드를 호출해야 하기 위해 public이다.

 

 

 

 

+ Recent posts