posted by 준치 2013. 9. 30. 18:13

 

1.1 클래스 선언

객체 지향 프로그래밍(OOP) 환경에서 가장 핵심

C#에서는 클래스에 속한 변수를 필드(field) , 함수(Method) 한다.

Field method 표현하는 과장을 추상화 한다.

추상화된 결과를 클래스에 포함시키고 변경해서는 되는 것을 적당히 숨겨 스스로 방어하는 것을 캡슐화 한다.

 

형식

지정자 class 이름 : 기반클래스

{

// 멤버 목록

}

 

1.2 분할 선언

분할 선언은 클래스 , 구조체 , 인터페이스 같이 덩치가 타입을 여러 개의 소스 파일에 나누어서 선언하는 방식 이다.

partial 이라는 지정자를 붙여 선언하면 같은 이름을 가지는 클래스 조각들이 나중에 컴파일러에 의해 하나로 합쳐진다.

 

규칙이 있는데 동일한 namespace 포함되어야 하며 컴파일러가 합치는 이라서 순서는 장담 없다.

 

1.3 지정자

클래스 멤버 앞에는 액세스 가능성 , 변경 가능성 , 상속 가능성 , 재정의 가능성 여부 등의 성질을 결정하는

여러 가지 지정자(Modifier)들을 붙일 있다.

 

액세스 지정자

Private , protected , public , internal , protected internal

객체 지향의 이런 특정(지정자를 통해 중요한 멤버를 안전하게  숨김) 정보 은폐(Information Hiding)라고 한다.

 

이외 지정자

static , readonly , const , virtual , override , new , abstract , sealed , volatile , extern

 

1.4 생성자

객체 생성시에 자동으로 호출되는 Method(메소드) 이며 객체를 초기화하는 역할을 한다.

형식

지정자 클래스 (인자 ){

}

 

1.5 파괴자

가비지 컬렉터가 해제 없는 관리 자원을 해제 사용한다.

화면 해상도 , 사운드 카드 , 볼륨 ,네트워크 연결 같은 메모리와 직접적으로 상관없는 환경

형식

~클래스 ~Human_Finalize()

 

2.1 정적 멤버

클래스와 객체는 다르다. 클래스는 객체를 만들기 위한 형틀에 불과하며 객체는 클래스가 메모리에 구현되어

생성된 실체이다. 실체를 인스턴스 라고 한다.

 

static 사용하여 정적 생성자를 이용하지 않고 정적필드의 초기값을 지정 있다.

정적필드 개별 객체에 소속되지 않으며 클래스에 직접 소속

객체가 아무리 많이 생성되어도 정적 필드는 하나만 생성

메모리에 한번만 생성

모든 객체 공유

 

쓰는 이유?! 클래스에 속한 모든 객체들이 공유해야 하는 전역적인 설정 정보나 읽기만 하는 참고 정보들이 정적 필드로 선언

한다.

 

2.2 상수 멤버

초기화되면 변경 없는 멤버

리터럴(Literal) 이라고 부르기도 한다.

const 형식

class Data{

public const int DAY = 24;

}

 

2.3 내부 타입

클래스가 클래스를 포함하는 중첩도 가능

클래스 안에 포함된 클래스를 내부 타입(Nested Type) 이라고 한다.

반대 개념은 외부 타입(Non Nested Type) 이며 namespace 소스 파일 바깥에 선언된