2008. 11. 14. 17:47

깡통 개발자의 C# 익히기 -제 3강- (CLASS에 대해서...)

이번 강좌는 CLASS에 대해서 알아보겠습니다. 어제 강의에서 잠깐 언급한 적이 있는데 원낙 중요하고, 광범위한 내용이라 3강에서 이렇게 알아보는 것입니다. 필이 중요한 부분이므로 필독하시기 바랍니다. 만약 이해가 안되는 부분이 있다면 그냥 읽어만 두고 넘어가자. 

클래스의 정의


객체를 생성하는 데이타원본 

  •     Abstraction(추상화)
  •     Encapsulation(은닉)
  •     Inheritance(상속)
  •     Polymorphism(다형성)  

클래스의 특이사항


▷ Nested Class

    - Public : Aⓒ.bⓒ 로 외부에서 접근 가능

    - Private : Aⓒ에서만 사용하는 개인적 서브클래스 

▷ Static method

    - Static 변수를 조작

    - 인스턴스변수 & this 연산자 & 일반멤버메서드 사용 불가 

new 연산자의 내부동작

    - 지정된 자료형의크기만큼 heap 으로부터 메모리 할당

    - 힙영역에는 메모리의 할당을 위한 특별한 포인터 존재

    - 포인터를 중심으로 한쪽은 할당된 메모리, 다른쪽은 할당가능한 메모리

    - 요청된 크기의 충분한 메모리있는지 논리검사

    - 크기만큼의 메모리할당하고 포인터 조정

    - 불충분시 가비지 컬렉터의 메모리수거시까지 기다림

    - 이 역시 불가시 메모리할당 오류 

▷ readonly member

    - 한번 값을 초기화하면 값의 변화 불가능

    - 생성자함수를 사용하여 초기화 수행    

▷ static 생성자 함수

    - static 키워드로 지정된 클래스 레벨의 생성자 함수

    - 클래스가 메모리로 로딩될때 호출

    - static 별수를 초기화할때 사용

    - 접근지정자 지정 & 인자호출 & this 사용 불가능

    - 오직 한번만 호출 가능 

▷ Finalize

    - Garbage Collector 에게 반환 알림 -> 두번 호출가능성

    - ~Class(); 과 동시선언 불가능 

▷ 기타사항(중요함)

    - 단일상속만을 지원 -> interface 사용

    - public 접근자만 상속으로 지원함

    - 상속되는 순간 실제 메모리가 따로 생성됨

    - protected 지정자의 멤버는 후손클래스에게만 제공됨 

인터페이스(Interface)


클래스가 제공하는 서비스를 명시하는데 사용되는 행위의 집합. 특징으로는 메소드,속성, 인덱서,이벤트는 포함할 수 있으나, 상수, 필드멤버, 생성자, 소멸자, 공유멤버는 포함할 수 없다.

구문

interface 인터페이스명 {

//    인터페이스 멤버선언

}

 ▷Sealed

    - class가 sealed로 접근권한이 설정된 이 클래스는 다른 클래스의 기본 클래스가 될수 없다. 

▷Abstract

    - class의 멤버를 모두 정의내리지 못한 기본 클래스

    - interface -> 다중상속

 

abstract class A
{
   public abstract void F();
}
abstract class B: A
{
   public void G() {}
}
class C: B
{
   public override void F() {
      // actual implementation of F
   }
}

 예상대로 내용이 점점 많아 지고 있습니다. 오늘은 주말이고 하니 여기까지 하겠습니다. 즐거운 주말보내십시오.

<<출처>> 데브피아