반응형
[C#] 접근제한자: 클래스 멤버의 가시성 관리하기
안녕하세요! 이번 포스트에서는 C#의 접근제한자(Access Modifiers)에 대해 자세히 알아보겠습니다. 접근제한자는 클래스, 메서드, 필드 등 멤버의 가시성을 제어하여 코드의 안전성과 캡슐화를 향상시킵니다.
접근제한자란 무엇인가요?
접근제한자는 클래스 또는 클래스 멤버(필드, 메서드, 속성 등)의 접근 수준을 정의하는 키워드입니다. 이를 통해 외부 코드에서 클래스 내부의 특정 멤버에 접근할 수 있는지를 결정할 수 있습니다.
주요 접근제한자
C#에서 사용되는 주요 접근제한자는 다음과 같습니다:
- public: 모든 곳에서 접근할 수 있습니다.
- private: 동일한 클래스 내에서만 접근할 수 있습니다.
- protected: 동일한 클래스 및 해당 클래스를 상속받은 자식 클래스에서 접근할 수 있습니다.
- internal: 동일한 어셈블리 내에서만 접근할 수 있습니다.
- protected internal: 동일한 어셈블리 내에서 또는 해당 클래스를 상속받은 자식 클래스에서 접근할 수 있습니다.
- private protected: 동일한 어셈블리 내에서 상속받은 자식 클래스에서만 접근할 수 있습니다.
접근제한자의 사용 예시
다음은 접근제한자를 사용하는 예시입니다.
public class Example
{
public int PublicField; // 어디서나 접근 가능
private int PrivateField; // 클래스 내부에서만 접근 가능
protected int ProtectedField; // 상속받은 클래스에서 접근 가능
internal int InternalField; // 동일한 어셈블리 내에서 접근 가능
protected internal int ProtectedInternalField; // 동일한 어셈블리 내 또는 상속받은 클래스에서 접근 가능
private protected int PrivateProtectedField; // 동일한 어셈블리 내에서 상속받은 클래스에서만 접근 가능
public void PublicMethod()
{
// 어디서나 접근 가능
}
private void PrivateMethod()
{
// 클래스 내부에서만 접근 가능
}
protected void ProtectedMethod()
{
// 상속받은 클래스에서 접근 가능
}
internal void InternalMethod()
{
// 동일한 어셈블리 내에서 접근 가능
}
protected internal void ProtectedInternalMethod()
{
// 동일한 어셈블리 내 또는 상속받은 클래스에서 접근 가능
}
private protected void PrivateProtectedMethod()
{
// 동일한 어셈블리 내에서 상속받은 클래스에서만 접근 가능
}
}
접근제한자의 활용
캡슐화 (Encapsulation)
접근제한자를 사용하면 객체의 내부 상태를 외부에서 직접 접근하지 못하도록 보호할 수 있습니다. 이는 데이터의 무결성을 유지하고, 클래스의 내부 구현을 변경하더라도 외부 코드에 영향을 주지 않도록 합니다.
public class BankAccount
{
private decimal balance; // 외부에서 직접 접근 불가
public void Deposit(decimal amount)
{
if (amount > 0)
{
balance += amount;
}
}
public decimal GetBalance()
{
return balance;
}
}
상속과 접근제한자
상속 관계에서 접근제한자는 매우 중요한 역할을 합니다. protected 접근제한자를 사용하면, 자식 클래스에서 부모 클래스의 멤버에 접근할 수 있습니다.
public class Animal
{
protected string name;
public Animal(string name)
{
this.name = name;
}
public void Display()
{
Console.WriteLine("Name: " + name);
}
}
public class Dog : Animal
{
public Dog(string name) : base(name)
{
}
public void Bark()
{
Console.WriteLine(name + " is barking!");
}
}
접근제한자와 인터페이스
인터페이스의 모든 멤버는 기본적으로 public입니다. 따라서 인터페이스에서 접근제한자를 명시할 필요가 없습니다.
public interface IShape
{
void Draw();
double CalculateArea();
}
마치며
이번 포스트에서는 C#의 접근제한자에 대해 알아보았습니다. 접근제한자는 클래스와 클래스 멤버의 가시성을 제어하여 코드의 안전성과 캡슐화를 향상시킵니다. 이를 통해 객체지향 프로그래밍의 원칙을 더 잘 구현할 수 있습니다. 추가적인 질문이나 궁금한 점이 있다면 언제든지 댓글로 남겨주세요!
반응형
'Programming > C#' 카테고리의 다른 글
C# 상속(Inheritance) 객체지향 프로그래밍의 핵심 개념 (0) | 2024.06.09 |
---|---|
C# 값 복사와 참조 복사 데이터 전송의 기본 개념 (0) | 2024.06.09 |
C# 생성자와 소멸자 객체 생명주기의 시작과 끝 (0) | 2024.06.09 |
C# 메서드 코드의 재사용과 모듈화 (0) | 2024.06.09 |
C# 클래스: 객체지향 프로그래밍의 기초 (0) | 2024.06.09 |