... | ... | @@ -4,18 +4,16 @@ |
|
|
<br />
|
|
|
|
|
|
## 클래스
|
|
|
기본 자료형 타입으로는 현실 세계의 모든 것들을 표현하기 힘들기 때문에, 개념이 비슷한 것들을 일반화하여 표현하기 위해 직접 타입을 정의한 것이다.
|
|
|
|
|
|
클래스로 정의된 타입은 모두 참조형으로 분류되므로 사용하려면 new 연산자로 메모리 할당을 해야한다.
|
|
|
개발자가 직접 속성과 메서드로 구성된 타입을 정의한 것이다. 클래스로 정의된 타입은 모두 참조형으로 분류되므로 사용하려면 new 연산자로 메모리 할당을 해야한다.
|
|
|
|
|
|
## 객체와 인스턴스
|
|
|
클래스 타입의 변수를 선언했을 때 **객체**라 부르고, 그 객체가 new 키워드를 써서 실제 메모리에 할당됐을때 **인스턴스**라고 한다.
|
|
|
|
|
|
### 필드
|
|
|
클래스의 속성을 의미한다. 또는 객체에 속한 변수이다. 멤버 변수라고도 한다.
|
|
|
클래스의 속성을 변수로 정의한 것이다. 기본형 타입이나 사용자 정의형 타입으로 정의할 수 있다. 멤버 변수라고도 한다.
|
|
|
|
|
|
### 메서드
|
|
|
클래스의 행위를 의미한다. 또는 객체에 속한 함수이다. 서브루틴, 프로시저라고도 한다. 메서드를 쓰는 이유는 다음과 같다.
|
|
|
클래스의 행위를 함수로 정의한 것이다. 서브루틴, 프로시저라고도 한다. 메서드를 쓰는 이유는 다음과 같다.
|
|
|
1. 중복 코드 제거 : 중복된 코드는 메서드로 묶어서 편하게 이용할 수 있다.
|
|
|
2. 코드 추상화 : 메서드의 내부를 몰라도 입출력 인자의 용도만 안다면 사용 가능하다.
|
|
|
|
... | ... | @@ -23,7 +21,7 @@ |
|
|
객체가 생성되는 시점에 자동으로 호촐되는 메서드. 반환타입을 명시하지 않는 점을 제외하면 일반 메서드를 정의하는 방법을 따른다.
|
|
|
|
|
|
### 소멸자
|
|
|
객체가 제거되는 시점에 자동으로 호출되는 메서드. C#은 C++와 달리 delete라는 예약어가 없고, GC가 호출돼야 소멸자가 호출된다. 그래서 정확히 언제 소멸자가 호출되는지 알 수 없다. 소멸자의 사용은 권장되지 않고, 주로 IDisposable을 구현하여 Dispose()를 사용하는 방법이 권장된다.
|
|
|
객체가 제거되는 시점에 자동으로 호출되는 메서드. C#은 C++와 달리 delete라는 예약어가 없고, GC가 호출돼야 소멸자가 호출된다. GC가 정확히 언제 호출되는지 알 수 없기 때문에 소멸자의 사용은 권장되지 않는다. 대신 IDisposable을 구현하여 Dispose()를 사용하는 방법이 권장된다.
|
|
|
|
|
|
다음은 생성자와 소멸자의 예시이다.
|
|
|
|
... | ... | @@ -70,7 +68,6 @@ class Dog |
|
|
|
|
|
Console.WriteLine(Dog.CountOfInstance);
|
|
|
//CountOfInstance가 인스턴트 필드였다면 인스턴스 단위로 변수를 가지고 있기 때문에 총 인스턴스 개수를 셀 수 없다.
|
|
|
|
|
|
}
|
|
|
}
|
|
|
```
|
... | ... | @@ -211,7 +208,7 @@ class Dog |
|
|
{
|
|
|
private string name;
|
|
|
|
|
|
public string Name //Visual Studio에서 name을 눌러 자동생성 가능.
|
|
|
public string Name //Visual Studio에서 자동생성 가능.
|
|
|
{
|
|
|
get
|
|
|
{
|
... | ... | |