[C# 시작 전 필수] 객체지향의 '접근 제한자'
2025. 3. 14. 23:42ㆍprogramming/C#
🔒 접근 제한자(Access Modifiers)란?
클래스, 변수, 메서드 등에 대한 접근 범위를 제한하는 키워드.
즉, 어디에서 해당 멤버를 사용할 수 있는지를 결정하는 역할을 한다.
🚀 C#의 주요 접근 제한자 5가지
접근 제한자 접근 가능 범위 사용 예시
public | 어디서나 접근 가능 | 클래스 내부, 외부, 다른 프로젝트에서도 사용 가능 |
private | 해당 클래스 내부에서만 접근 가능 | 외부에서는 절대 접근 불가 |
protected | 해당 클래스와 자식 클래스에서만 접근 가능 | 상속받은 클래스에서 사용 가능 |
internal | 같은 프로젝트(어셈블리) 내에서만 접근 가능 | 다른 프로젝트에서는 접근 불가 |
protected internal | 같은 프로젝트 또는 상속받은 클래스에서 접근 가능 | 내부 또는 상속 관계에서 사용 가능 |
🔹 접근 제한자 예제
class 사람 {
public string 이름 = "홍길동"; // 어디서나 접근 가능
private int 나이 = 25; // 해당 클래스 내부에서만 접근 가능
protected string 국적 = "한국"; // 자식 클래스에서도 접근 가능
internal string 주소 = "서울"; // 같은 프로젝트 내에서 접근 가능
public void 소개() {
Console.WriteLine($"이름: {이름}, 나이: {나이}");
}
}
class 학생 : 사람 {
public void 정보출력() {
Console.WriteLine($"이름: {이름}, 국적: {국적}"); // protected 변수 접근 가능
// Console.WriteLine($"나이: {나이}"); // ❌ private이므로 접근 불가
}
}
class Program {
static void Main() {
사람 p = new 사람();
Console.WriteLine(p.이름); // ✅ public이므로 접근 가능
// Console.WriteLine(p.나이); // ❌ private이므로 접근 불가
// Console.WriteLine(p.국적); // ❌ protected이므로 접근 불가
Console.WriteLine(p.주소); // ✅ internal이므로 같은 프로젝트 내에서 접근 가능
}
}
🔹 접근 제한자 요약
제한자 클래스 내부 자식 클래스 같은 프로젝트 다른 프로젝트
제한자 | 클래스내부 | 자식클래스 | 같은 프로젝트 | 다른 프로젝트 |
public | ✅ | ✅ | ✅ | ✅ |
private | ✅ | ❌ | ❌ | ❌ |
protected | ✅ | ✅ | ❌ | ❌ |
internal | ✅ | ✅ | ✅ | ❌ |
protected internal | ✅ | ✅ | ✅ | ❌ |
🔹 언제 어떤 접근 제한자를 사용할까?
✔ public → 모든 곳에서 사용해야 하는 경우 (예: 공용 라이브러리 함수)
✔ private → 외부에서 접근하면 안 되는 중요한 데이터 (예: 비밀번호, 개인 정보)
✔ protected → 자식 클래스에서만 사용할 데이터 (예: 동물의 기본 행동)
✔ internal → 같은 프로젝트 내에서만 공유해야 할 데이터 (예: 프로젝트 내부 유틸 함수)
✔ protected internal → 내부 또는 상속 관계에서만 접근해야 할 데이터 (예: 특정 유틸 클래스)
🎯 정리
✅ 접근 제한자는 클래스 멤버(변수, 메서드 등)의 접근 범위를 결정하는 키워드
✅ public, private, protected, internal, protected internal 총 5가지
✅ 보안과 캡슐화를 위해 꼭 적절한 접근 제한자를 사용해야 함
'programming > C#' 카테고리의 다른 글
[C# 시작 전 필수] 객체지향(OOP)이란? (2) | 2025.03.15 |
---|---|
[C# 시작 전 필수] 객체지향(OOP)의 4대 특징 (feat.캡슐화, 상속, 다형성,추상화) (0) | 2025.03.15 |