본문 바로가기
Unity & C# Basics

C# 공부일지 : 엑세스 한정자, 메서드, OOP

by 나만두 2025. 1. 24.

 

엑세스 한정자 

 

const: 컴파일 타임 상수임. 값을 선언과 동시에 할당해야 하고 이후 변경 불가. 변수나 메서드 결과를 할당할 수 없음.

 

private const int MAX_HP = 100; // ✅ 선언과 동시에 값 할당해야 함  
private const int VALUE = GetValue(); // ❌ 런타임 값 할당 불가

 

 

readonly: 런타임 상수임. 선언만 하고 생성자에서 값을 할당할 수 있음. 한 번 할당한 후에는 변경 불가.

 

private readonly int maxMp; // ✅ 선언만 가능  
public Example(int mp)  
{  
    maxMp = mp; // ✅ 생성자에서 할당 가능  
}

 

 

static: 모든 인스턴스가 공유하는 값임. 객체를 생성하지 않아도 사용 가능하고, 한 곳에서 변경하면 모든 곳에 영향을 줌.

 

private static readonly int maxSpeed = GetMaxSpeed(); // ✅ 런타임에 한 번 할당 가능  

 

 

 

 

메서드

메서드 오버로딩 : 같은 이름의 메서드를 여러 개 정의하는 것. 매개변수의 개수나 타입이 다르면 같은 이름의 메서드를 여러 정의할 있음

 

Static,메서드 오버로딩 사용 예시

 

 

ref 매개변수

원본 값을 직접 참조함. 즉, 메모리의 주소를 전달하여 원본 값을 변경할 수 있음.

기존 값을 수정할 때 사용됨.

초기화된 변수만 ref로 전달 가능하며, 메서드 내에서 값을 변경하는 것은 선택 사항임.

 

out 매개변수

초기화되지 않은 상태로 전달 가능하고, 메서드 내에서 반드시 값을 할당해야 함.

추가 반환 값을 제공하기 위한 단방향 출력 용도로 사용됨.

 

ref vs out 차이

ref 기존 값 수정 (변수 초기화 필요)

out 새로운 값 반환 (변수 초기화 불필요, 메서드 내 할당 필수)

 

 

OOP

interface (인터페이스)

클래스가 반드시 구현해야 하는 메서드와 프로퍼티를 정의하는 데 사용됨.

구현부가 없으며, 다중 상속이 가능함.

 

인터페이스 예시

 

 

 

추상 클래스 (abstract), 메서드 재정의 (override)

abstract: 추상 클래스를 만들 때 사용함.

객체를 직접 생성할 수 없음 (상속을 통해서만 사용 가능)

일부 메서드는 구현할 수도 있고, 일부는 abstract로 선언하여 자식 클래스에서 구현하도록 강제할 수도 있음

override: 부모 클래스의 메서드를 재정의할 때 사용함.

추상 클래스
메서드 재정의

 

 

네임스페이스 (namespace)

코드를 논리적으로 정리하는 개념임.

같은 네임스페이스 안의 클래스들은 쉽게 접근할 수 있음.

이름 충돌을 방지하는 역할을 함.

폴더처럼 코드를 그룹화하는 방식임.

namespace
namespace 사용