C# 프로그래밍 - 접근제한자(public, private, protected, internal, 기타)

반응형

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

해당 클래스와 같은 어셈블리 내에서 하위 클래스에서만 접근 가능. 

반응형

댓글

Designed by JB FACTORY