객체의 설계도인 클래스를 작성하면, 실제로 클래스의 실현(instantiation)인 객체를 생성할 수 있습니다.
데이터형은 모두 객체라고 했습니다. 이를 다시 말하면 객체도 하나의 데이터형인 것입니다. 닷넷 프레임워크에서 제공하는 내장형과 enum, struct와 같이 메모리의 스택 영역을 사용하는 데이터형을 값형(Value Type)이라고 했습니다.
그리고 데이터형 중 참조형(Reference Type)에서 변수는 스택 영역에 저장되지만 실제 객체는 힙(Heap) 메모리 영역에 저장된다고 했습니다. 그리고 변수에는 단지 힙 메모리 영역에서 객체의 위치 정보만을 저장하게 됩니다. 클래스의 실현인 객체도 힙 메모리 영역을 사용합니다. 그리고 객체에 대한 변수도 단지 힙 영역의 객체 위치 정보만을 저장합니다. 따라서 객체도 하나의 참조형 데이터인 것입니다.
참조형 데이터인 객체를 실제 코드에서 사용하려면 힙 영역 메모리에 적재해서 사용해야 할 것입니다. 메모리에 객체를 만들어 적재하는 것을 객체의 생성이라고 표현할 수 있습니다. 객체의 생성은 생성자(Constructor)가 담당하게 됩니다.
객체의 생성
class Date
{
private int yy;
private int mm;
private int dd;
public Date()
{
this.yy = 2008;
this.mm = 3;
this.dd = 14;
}
public Date(int yy, int mm, int dd)
{
this.yy = yy;
this.mm = mm;
this.dd = dd;
}
public void GetDate()
{
Console.WriteLine("{0}년 {1}월 {2}일", yy, mm, dd);
}
public void SetDate(int year, int month, int day)
{
yy = year;
mm = month;
dd = day;
}
}
class Program
{
static void Main(string[] args)
{
Date today1 = new Date();
today1.GetDate();
Date today2 = new Date(2008, 03, 07);
today2.GetDate();
}
}
- 메모리 할당 : 키워드 new를 사용해서 힙 영역의 메모리를 할당한다.
- 생성자에 의한 객체의 값 초기화 : 생성자에 의해 객체의 값을 초기화한다.
생성자
생성자는 클래스의 이름과 같으며, 형태는 메소드와 비슷하고 객체의 값을 초기화 시켜준다.
생성자의 특징을 정리하면 다음과 같습니다.
- 클래스명과 생성자명이 같다.
- 반환 값이 없다. 그렇지만 void를 의미하진 않는다.
- 기본 생성자의 접근 권한은 public이다.
- 기본 생성자의 경우 인자를 포함하지 않는다.
- 기본 생성자에 의해 객체의 모든 멤버들이 초기화된다.
숫자형 멤버는 0, 불리언형 멤버는 false, 참조형 변수는 null로 초기화 된다.
Date today1 = new Date(); <-- 객채의 값이 0으로 초기화
Date today2 = new Date(2008, 03, 07); <--객체의 값이 2008,03,07로 초기화
class da
class Date()
{
public Date()
{
this.yy = 2008; <--위의 예제에서 이와 같이 클래스 내에 생성자를 구현할 수도 있다.
this.mm = 3;
this.dd = 14;
}
}
댓글 없음:
댓글 쓰기