1. public
해당 키워드로 한정된 경우,
어디서는 접근 가능합니다.
외부에서의 모든 접근을 허용하여 상속, 매서드 확장 등 유연한 개발을 가능하도록 합니다.
예시>
public class MyClass
{
public string name;
}
2. private
해당 키워드로 한정된 경우,
선언된 곳에서만 접근 가능합니다.
내부에서 접근만을 허용하여 외부에 보여주고 싶지 않거나 보여주면 안되는 항목을 숨깁니다.
불필요한 항목을 외부에 숨겨, 개발간 혼란을 방지할 수 있습니다.
예시>
public class MyClass
{
public sting name;
private int age; // 클래스 외부에서 접근할 수 없음
}
3. protected
해당 키워드로 한정된 경우,
선언된 곳과 상속받는 곳에서 접근 가능합니다.
상속받는 곳에서의 접근을 허용함으로써, 개발 커스터마이징 또는 기능 보완을 가능하게 합니다.
예시>
pulbic class MyParentClass
{
public string name;
protected int age; // 상속받는 클래스에서 접근 가능함
}
public class MyChildClass : MyParentClass // MyParentClass 상속받음
{
public void ChangeAge(int val)
{
age = val; // 부모인 MyParentClass의 age 변수에 접근 가능함
}
}
4. interal
해당 키워드로 한정된 경우,
같은 어셈블리에 있는 코드에 대해서 접근 가능합니다.
같은 어셈블리에 있다는 표현은 말은 쉽게 풀어서 같은 프로젝트 안에 있다라고 표현할 수 있습니다.
같은 어셈블리 안에서는 public, 다른 어셈블리에게는 private 으로 처리할 수 있도록 합니다.
예시>
// Assembly : MyProject
namespace MyProject
{
internal class MyClass
{
public string name;
}
}
// Assembly : MyProject
namespace MyProject
{
public class MyNewClass
{
MyClass c1 = new MyClass(); // 같은 어셈블리에서 접근 가능
c1.name = "SynK";
}
}
// Assembly : YourProject
namespace YourProject
{
public class YourClass
{
MyClass c1 = new MyClass(); // 다른 어셈블리에서 인터널 클래스 접근 불가
}
}
5. 요약
접근 한정자 |
설명 |
public |
클래스 내부/외부 모든 곳에서 접근 가능. |
private |
클래스 내부에서만 접근 가능. 파생 클래스에서는 접근 불가. |
protected |
클래스 외부에서는 접근할 수 없음. 파생 클래스에서는 접근 가능. |
internal |
같은 어셈블리에서는 접근 가능. 다른 어셈블리에서는 접근 불가. |
'.NET C# > 문법' 카테고리의 다른 글
interface, abstract 키워드 (0) | 2020.02.15 |
---|