
| 호출자의 위치 | public | protected internal | protected | internal | private protected | private |
|---|---|---|---|---|---|---|
| 클래스 내 | ✔️️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 파생 클래스 (동일한 어셈블리) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
| 비파생 클래스 (동일한 어셈블리) | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
| 파생 클래스 (다른 어셈블리) | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
| 비파생 클래스 (다른 어셈블리) | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
using System;
namespace AccessModifier
{
class MyClass1
{
public int a;
private int b;
protected int c;
void Function1() // private로 자동 지정
{
this.a = 1;
this.b = 1;
this.c = 1;
}
}
class MyClass2 : MyClass1 // MyClass1을 상속 받은 파생 클래스
{
void Function2()
{
a = 3; // public 한정자
b = 3; // private 한정자 → 에러 발생
c = 3; // protected
}
}
class MainApp
{
static void Main(string[] args)
{
MyClass1 test = new MyClass1();
test.a = 2; // public 한정자
test.b = 2; // private 한정자 → 에러 발생
test.c = 2; // protected → 에러 발생
}
}
}
▪ 참고: Hello Fruit! - 상속 (파생 클래스)
▪ 사진 출처: Pixabay - MasterTux