사용자 정의 타입

  • 모든 프로그래밍 언어에서는 사용자 정의 타입을 지원
  • C# 에서는 구조체(Structure) 혹은 클래스(Class)를 사용할 수 있음
    • 둘은 키워드가 다른 것 외에는 정의하는 방식은 동일
    • 구조체는 값 타입, 클래스는 참조 타입
    • 구조체 혹은 클래스를 구성하는 요소를 멤버(Member)라고 함

캐릭터 타입 만들기

  • 타입을 정의했으므로 Character 타입의 객체를 생성할 수 있음

    • 이때 만들어진 객체를 타입에 대한 인스턴스(Instance)라고 함
  • 인스턴스를 만들 때는 new 연산자를 사용

  • 멤버에 접근하고 싶다면 멤버접근 연산자 온점(.)을 사용

    • 위의 예시에서 오류가 발생하는데, 이를 이해하기 위해서는 접근 한정자에 대해 알아야 함

접근 한정자

  • C#에서 모든 타입과 타입 멤버는 접근 수준이라는 것을 가지고 있음
  • 접근 수준은 해당 코드를 사용할 수 있는지를 결정
  • 접근 한정자(Access Modifier)를 이용해 타입 혹은 멤버의 접근 수준을 변경할 수 있음
  • 적절한 접근 한정자를 사용하면 설계자 입장에서는 외부에서의 의도치 않은 멤버 수정을 막을 수 있고, 사용자 입장에서는 파악해야할 문맥이 줄어들기 때문에 사용이 편리해짐
  • C#에서 접근 한정자는 6가지가 있지만, 이 중 3가지만 짚고 넘어감

public

  • 어디서든 접근이 가능하고, 심지어는 다른 어셈블리에서도 접근할 수 있음

internal

  • public과 비슷하게 어디에서든 접근이 가능하지만, 같은 어셈블리에서만 접근할 수 있음
  • 구조체 및 클래스 타입의 기본 접근 한정자
    • 위의 Character 클래스에서 아무런 접근 한정자를 명시해주지 않았기 때문에 기본 접근 한정자인 internal이 암시적으로 붙어있음
    • (internal) Class Character

private

  • 외부에서 절대 접근이 불가능
  • 오직 타입 내부에서만 접근 가능함
  • 멤버의 기본 접근 한정자
    • 위의 Hp, Mp, Atk 멤버에서 아무런 접근 한정자를 명시해주지 않았기 때문에 기본 접근 한정자인 private이 암시적으로 붙어있음
    • (private) int Hp, (private) int Mp, (private) int Atk

오류 분석하기

  • 멤버 접근 한정자를 이용해서 오류를 고쳐보자

    • Character 클래스의 멤버인 Hp, Mp, Atk는 앞에 private 접근 한정자가 붙어있어서 외부에서 접근할 수 없음
  • public 접근 한정자를 붙여주니 컴파일 오류가 사라짐을 볼 수 있음

초기화

  • 초기화는 이렇게 하면 됨
  • 중괄호 뒤에 세미콜론을 빼먹지 않도록 주의
profile
프로그래머 지망생

0개의 댓글