Access modifiers는 C# project에서 object와 object의 members의 접근성을 명시한다. encapsulation을 강화하고, 의도하지 않은 접근이나 변경으로부터 보호한다. 모든 C# types는 access modifiers를 갖는다. 명시되지 않은 경우 기본 access modifier가 지원된다.
Access Modifiers Types
private, public, protected, internal, 그리고 protected-internal, private-protected 와 같은 두 가지 조합이 있다.
각 access modifiers는 다른 수준의 접근성과 가시성을 제공하며, 우리는 이를 사용하여 object의 동작을 제어할 수 있다.
Private Access Modifier
가장 제한적인 access modifier이다. private로 선언된 Member는 선언된 class 내부에서만 접근이 가능하다.
class를 private로 지정하면, 다른 class는 상속받을 수 없다.
Public Access Modifier
가장 허용적인 access modifier이다. 자식 class 포함해서 코드 어디서나 접근이 가능하다.
class를 public으로 지정하면, 다른 class가 상속받을 수 있다.
Protected Access Modifier
protected는 class 내부와 자식 class에서만 접근 가능하다.
Internal Access Modifier
자신의 assembly 내부에서만 접근 가능하고, 다른 assemblies에서는 접근할 수 없다. 동일한 assembly에서만 유용하고, public API의 일부가 아닌 class를 생성가능하게 한다.
Protected Internal Access Modifier
protected와 internal의 조합이다. 동일한 assembly에서 접근하거나, 다른 assemblies(projects)의 자식 class에서 접근할 수 있다.
Private Protected Access Modifier
private와 protected의 조합이다. 동일한 class 이거나, 동일한 assembly(project)의 다른 자식 class에서 접근 가능하다.
Default Access Modifier
namespace에서 바로 선언되는 Classes, records, structs는 public 또는 internal이다. 명시된 access modifier가 없으면 기본으로 internal이다.
nested classes, structs를 포함한 Class members는 public, protected internal, protected, internal, private protected, private가 될 수 있다. 명시된 access modifier가 없으면 기본으로 private이다.
자식 클래스 Access Modifier
자식 클래스는 부모 클래스의 접근성보다 클 수 없다. internal, protected class를 상속받는 자식 클래스는 public이 될 수 없다.
Method Access Modifier
함수의 return type과 parameter type은 적어도 함수 자신의 접근범위를 가져야 한다.
'C#' 카테고리의 다른 글
C#] SOLID 원칙 5. Dependency Inversion Principle(의존성 역전 원칙) (0) | 2024.02.07 |
---|---|
C#] SOLID 원칙 4. Interface Segregation Principle(인터페이스 분리 원칙) (1) | 2024.02.07 |
C#] Virtual VS Abstract 함수 차이점 (2) | 2024.02.02 |
C#] Value VS Reference Types (0) | 2024.02.01 |
C#] Class Variable, Class Reference, Class Instance의 차이점 (0) | 2024.01.31 |
댓글