본문스크랩 클래스란?


클래스는class키워드를 사용하여 선언합니다. 다음 형식을 사용합니다.

 

[attributes] [modifiers]classidentifier [:base-list]{class-body}[;]

    attributes는 추가 선언 정보입니다. (선택적 요소)

    modifiers에 허용된 한정자는 new, abstract, sealed 및 네 개의 액세스 한정자입니다.

    ※ 액세스 한정자는 나중에…

    identifier는 클레스 이름입니다.

    :base-list는 하나의 기본 클래스와 구현되는 모든 인터페이스 목록으로, 모두 쉼표로 구분됩니다.

    {class-body}는 클래스 맴버를 선언합니다.

 

 

클래스 맴버

생성자, 소멸자, 상수, 필드, 메서드, 속성, 인덱서, 이벤트, 연산자, 대리자, 클래스, 인터페이스, 구조체

 

상속

C++과 달리 C#에서는 단일 상속만 가능합니다. 즉, 클래스는 하나의 기본 클래스에서만 구현을 상속할 수 있습니다. 그러나 클래스는 두 개 이상의 인터페이스를 구현할 수 있습니다. 일단은 클래시는 단일 상속만 가능하며, 실제 구현부를 만들어 주어야 합니다. 이에 반해 인터페이스는 추상클래스와 비슷하다고 생각하시면 됩니다. 선언은 해놓지만 구현은 하지 못합니다.

※ 객체지향언어에서는 다중상속을 지원하지 않습니다.(자바도 마찬가지…) 아마도 앞으로는 사양되는 추세로 갈듯…

아래에는 클래스 상속 및 인터페이스 구현 하는방법이 있습니다.

class ngmaster //상속 없음

{}

class ngmaster : baseClass //단일상속

{}

class ngmaster : interFace //단일 인터페이스 구현

{}

class ngmaster : interFace1, interFace2 //다중 인터페이스 구현

{}

class ngmaster : baseClass, interFace //단일상속, 단일 인터페이스 구현

{}

※ 감 잡으신분들도 계시겠지만 클래스는 상속이라는 표현을 쓰고 인터페이스는 구현이라는 표현을 왜 쓰는가에 대해서 한번쯤 생각해봅시다. 인터페이스는 상수와 추상메소드를 선언만 해놓은 집합입니다. 클래스와는 다르게 구현을 할수가 없기 때문에 상속을 받게되는 클래스에서 구현을 해주어야 합니다.

 


답글 남기기

이메일 주소는 공개되지 않습니다.