[C#] 클래스 추가 기능

JanMatny·2024년 11월 25일
0

C#

목록 보기
10/15
post-thumbnail

클래스 추가 기능(Class Additive Function)


목차

1. 메소드 숨기기
2. 오버라이딩 봉인하기
3. 중첩 클래스
4. 분할 클래스
5. 구조체
6. 튜플
7. 이름 공간(namespace)


메소드 숨기기

메소드 숨기기란?

  • 메소드 숨기기는 부모 클래스에서 구현한 메소드는 감추고, 자식 클래스에서 구현한 메소드를 보여주는 것
  • 자식 클래스에서 메소드를 재정의하려는 의도가 아니고 새로운 메소드를 만들었는데 부모 클래스에 가상 메소드 혹은 일반 메소드로 같은 이름의 메소드가 만들어져 있을 때 사용
  • Unity C#에서는 이럴 경우 new를 붙일 것을 권장하는 경고가 출력된다.


    메서드 숨기기 예시 -


  • 출력 결과 : Parent, Child, Parent

오버라이딩 봉인하기

오버라이딩 봉인하기란?

메소드를 오버라이딩(override) 할 수 없도록 봉인할 수 있다.
virtual로 선언된 가상 메소드를 오버라이딩한 버전의 메소드만 가능하다.


가상 메소드를 오버라이딩한 MovingEntity의 TakeDamage() 메소드에 sealed 키워드를 붙이면 MovingEntity를 상속받는 Player 클래스에서 TakeDamage()를 override하면 에러가 발생한다.(오버라이딩 불가능)


중첩 클래스

중첩 클래스(nested class)란?

중첩 클래스는 클래스 안에 선언되어 있는 클래스를 말한다.

중첩 클래스 사용 이유

  • 클래스들의 논리적인 그룹을 나타내기 위해 사용
  • 클래스 외부에 공개하고 싶지 않은 형식을 만들어서 클래스 내부에서만 사용할 때(향상된 캡슐화)
  • 현재 클래스 일부분처럼 표현할 수 있는 클래스를 만들 때
  • 좋은 가독성과 유지보수

Tip. 중첩 클래스 InnerClass는 자신이 정의된 OuterClass의 모든 맴버(private 포함)에 접근할 수 있다.


분할 클래스

분할 클래스(partial class)란?

하나의 클래스를 여러 구역에 나눠서 구현하는 클래스를 말한다.

분할 클래스 사용 이유

규모가 크더라도 하나의 클래스에 담아야 할 경우
어떤 특징으로 여러 개의 파일에 나누어 구현할 때 사용

Tip. 클래스명과 동일한 파일이 반드시 한 개 있어야 한다.
컴포넌트로 사용할 때 파일명과 클래스명이 같은 파일을 추가해야 한다.


구조체

구조체(struct)란?

  • 클래스와 유사한 구조를 가지고 있다.
  • 클래스처럼 변수와 메소드를 가질 수 있다.
  • 클래스는 객체를 만들고 추상화 하는데 목적이 있고,
    구조체는 데이터를 담기 위한 자료 구조로 사용한다.
    • 편의를 위해 변수를 public으로 선언하는 경우가 많다.


      구조체 예시 -


튜플

튜플(tuple)이란?

  • 여러 변수를 담을 수 있는 구조체
  • 일반적인 구조체와 다르게 형식의 이름을 가지지 않는다.
    • 프로그램 전체가 아닌 암시적으로 사용할 복합 데이터 형식을 선언할 때 사용
// 정의
var 튜플이름 = (데이터, 데이터, ..);
// 사용
튜플이름.Item1, 튜플이름.Item2, ..

컴파일러가 튜플의 형식을 결정하도록 var 사용
튜플을 정의할 때는 두 개 이상의 변수를 지정

튜플 사용 예시 -




이름 공간

이름 공간(namespace)란?

  • 하는 일이 비슷한 클래스, 구조체를 하나로 묶어 놓은 것
  • 매우 다양한 클래스가 존재할 때 클래스 이름이 중복되지 않도록 따로 이름을 붙여서 설정

Tip. 클래스 이름과 이름공간 이름이 같아도 되지만 문제가 될 수 있으니 같은 이름을 사용하지 않는다.

namespace 사용 예시 -


Tip. 만약 서로 다른 이름공간에 같은 이름의 클래스가 정의되어 있을 때 using MySpace; using YourSpace; 와 같이 둘 다 사용하겠다고 한다면 둘 중 어떤 Player를 사용하는 것인지 컴파일러가 알 수 없기 때문에 에러가 발생한다. 이럴 경우 MySpace.Player, YourSpace.Player와 같이 사용하는 것을 권장한다.

profile
코딩 공부용 벨로그

0개의 댓글