본문 바로가기
프로그래밍/c#

c#_31 접근 제한자, 접근 한정자 private, public, protected

by 지나팩 2021. 7. 12.

접근 제한자에 대해서 알아보도록 하겠습니다. 접근 제한자 또는 접근 한정자는 말 그대로 접근의 범위를 제한하거나 일부만 접근할 수 있도록 한정짓습니다. 

접근 제한자 접근 가능 범위
private 자신의 클래스 내부
protected 부모 클래스 자신 내부와 부모 클래스를 상속받은 자식 클래스 내부
public 모든 곳에서 접근 가능

이 외에도 internal과 protected internal도 있지만 이번 포스팅에선 위 접근 제한자들에 대해서 알아보도록 하겠습니다.

이미지에서 Test클래스를 만들어 변수 a는 public으로 변수 b는 private으로 선언했습니다. 그리고 타 클래스인 Program 클래스 내의 Main메소드(함수) 내에서 Test 클래스 객체를 생성 후 각각 접근했습니다. 이미지에서 보듯 public으로 선언한 변수 a의 경우 아무런 문제없이 접근이 가능하여 10이라는 값을 대입하고 있습니다. 반면 변수 b의 경우 private으로 선언이 되어 타 클래스에서는 보호 수준 때문에 엑세스 할 수 없다는 경고와 함께 에러가 발생합니다.

Test클래스 내에 private으로 선언된 변수 b가 같은 클래스 내에 있는 Func메소드(함수)내에선 접근이 가능한 것을 보실 수가 있습니다. 

위 이미지처럼 접근 제한자를 명시하지 않을 경우 변수와 함수는 기본적으로 private으로 설정이 됩니다.

protected의 경우 자신의 클래스와 파생 클래스에서만 접근이 가능한 것을 확인할 수 있습니다.(상속에 대해선 추후 다루도록 하겠습니다.) 당연히 외부의 타 클래스 내에선 접근을 할 수가 없습니다. 이렇듯 접근 제한자를 둔 이유는 굳이 외부에 공개할 필요가 없거나 중요한 테이터들은 숨겨둠으로써 안정성을 높이는 것입니다. 특히 여러 명이서 작업을 함께 하게 된다면 실수할 가능성이 농후하므로 중요한 데이터는 꼭 숨겨둬야 하겠죠.

 

항상 프로젝트의 구조를 생각하고 접근 제한자를 통해 접근의 범위를 정하시면 됩니다.

'프로그래밍 > c#' 카테고리의 다른 글

c#_33 클래스 상속(Class inheritance)  (0) 2021.07.20
c#_32 클래스 Class 생성자, 소멸자  (0) 2021.07.19
c#_30 클래스 Class 1  (0) 2021.07.08
c#_29 배열:Array2 다차원 배열  (0) 2021.06.09
c#_28 배열 Array 1  (0) 2021.06.01

댓글