3. 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.
public
가장 널리 사용되는 접근 제한자이다. 해당 멤버에 대한 접근이 어디에서든 가능하다.
다른 클래스, 어셈블리, 프로젝트 등 어디서든 접근할 수 있다.
private
해당 멤버에 대한 접근이 같은 클래스 내에서만 가능하다.
주로 내부 구현을 숨기고 외부에서의 무분별한 접근을 방지하기 위해 사용된다.
protected
같은 클래스 내부와 파생된 클래스에서의 접근이 가능하다.
상속을 통해 파생된 클래스에서 부모 클래스의 protected 멤버에 접근할 수 있다.
internal (처음봄;; 아직 이해 안감;;)
같은 어셈블리(assembly) 내에서의 접근이 가능하다.
어셈블리는 일반적으로 하나의 프로젝트를 나타내며, internal 멤버는 같은 프로젝트에서는 접근할 수 있지만 외부 프로젝트에서는 접근할 수 없다.
제한자를 적절하게 사용하면 클래스의 멤버에 대한 접근을 제어함으로써 코드의 안정성과 유지 보수성을 높일 수 있다. 적절한 접근 제한자의 선택은 클래스의 설계 및 의도된 사용법에 따라 달라진다.