C# 프로그래밍 - 접근제한자(public, private, protected, internal, 기타)
접근 제한자를 사용하여 클래스, 메서드, 필드, 속성 등의 접근 범위를 정의할수있습니다. 멤버의 가시성을 설정하여 객체지향 프로그래밍의 중요한 원칙 중 하나인 캡슐화와 정보 은닉을 구현하는 데 기여합니다.
public
모든 코드에서 접근 가능. 같은 어셈블리뿐만 아니라 다른 어셈블리에서도 접근할 수 있습니다.
public class PublicExample
{
public int PublicField;
public void PublicMethod()
{
// 모든 코드에서 접근 가능
}
}
private
해당 클래스 또는 구조체 내에서만 접근 가능. 외부에서 접근할 수 없으므로 데이터 보호에 유용
public class PrivateExample
{
private int privateField;
private void PrivateMethod()
{
// 이 메서드는 같은 클래스 내에서만 접근 가능
}
public void SetPrivateField(int value)
{
privateField = value; // public 메서드를 통해 private 필드에 접근 가능
}
}
protected
해당 클래스와 그 클래스의 하위 클래스에서 접근 가능. 상속된 클래스가 기본 클래스의 멤버에 접근을 허용
public class BaseClass
{
protected int protectedField;
protected void ProtectedMethod()
{
// 이 메서드는 BaseClass와 그 하위 클래스에서만 접근 가능
}
}
public class DerivedClass : BaseClass
{
public void AccessProtectedMembers()
{
protectedField = 10; // BaseClass의 protected 필드에 접근 가능
ProtectedMethod(); // BaseClass의 protected 메서드에 접근 가능
}
}
internal
같은 어셈블리 내의 모든 코드에서 접근할 수 있지만 다른 어셈블리에서는 접근할 수 없습니다. 모듈 내에서만 사용할 수 있도록 제한
internal class InternalExample
{
internal int InternalField;
internal void InternalMethod()
{
// 같은 어셈블리 내에서만 접근 가능
}
}
protected internal
같은 어셈블리 내의 모든 코드와 해당 클래스를 상속한 클래스에서 접근 가능. 두 가지 접근 제한을 조합한 형태
private protected
해당 클래스와 같은 어셈블리 내에서 하위 클래스에서만 접근 가능.
'c#' 카테고리의 다른 글
C# 프로그래밍 - 조건문 switch (0) | 2023.01.18 |
---|---|
C# 프로그래밍 - 조건문 if, if - else, if-else if, if 중첩 (0) | 2023.01.18 |
C# 프로그래밍 - Regex.Split 메서드를 사용한 문자열 분할 (0) | 2022.03.26 |
C# 프로그래밍 - 제네릭(Generic) 클래스, 메서드 (0) | 2021.10.29 |
C# 프로그래밍 - 배열(선언, 초기화, 크기지정, 자주 사용하는 메서드) (0) | 2021.07.05 |