프로그래밍 언어/C#

C# 클래스 접근 제한자 (Access Modifier)

ShovelingLife 2022. 7. 27. 12:48

접근 제한자에는 public, protected, internal, private가 있다. 클래스 기본형은 internal이다.

접근 제한자 설명 
private 클래스 내부에서만 접근이 가능하다.
public  모든 곳에서 해당 멤버로 접근이 가능하다.
internal 같은 어셈블리에서만 public으로 접근이 가능하다. 
protected 클래스 외부에서 접근할 수 없으나 파생 클래스에서는 접근이 가능하다.
protected internal  같은 어셈블리에서만 protected으로 접근이 가능하다. 
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    // internal 클래스
    class A
    {
        protected int x = 123;
        public float val = 10;
    }

    class B : A
    {
        public void Test()
        {
            A a = new A();
            B b = new B();

            // 에러 CS1540 발생 protected
            a.x = 10;

            // 접근 가능
            b.x = 10;
            b.val = 20;
        }
    }

    public class Test
    {
        static void Main()
        {
            A a = new A();
            a.val = 20;
        }
    }
}