무효 클릭 IP 추적 중...
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
c#

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public

꼬예 2022. 5. 6.
[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public

c# 코딩을 하다보면 클래스, 함수, 변수 제일 앞에 붙어 있는것을 보신적이 있으실겁니다.

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public

이러한 것들은 접근 제한자(Access modifier)라고 불리는데요.

 

접근제한자는 해당 변수 ,함수, 클래스에 개방성(?)정도를 조절하는 역할을 합니다. 

쉽게 말해 모두가 쓸수 있게 해준다거나,  아무도 못쓰게하는 등 제한 정도를 거는거죠.

 

자주 쓰이는것으로 아래 3가지 있으며, 이번 포스팅에서는 아래 3가지에 대해서만 알아 보도록 하겠습니다.

 

1. private

2. protected

3. public

 

 

1. public

public을 쓰는 순간 사실상 신경 쓸 필요가 없습니다.

왜냐하면 모든 곳에 사용 가능하고, 심지어 다른 파일에 있는 클래스도 가져와서 쓸 수 있습니다.

(다른 파일에 클래스를 사용한 예는 해당포스팅 참조)

 

2. private

해당 변수가 정의된 곳에서만 사용가능합니다.(가장 폐쇄적)

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public - undefined - 2. private

위 예시에서는 Player class 안에서 정의 되었기 때문에, Player class 바깥에서 실행하면 아래와 같이 접근 거부 에러가 뜹니다.

 

output:

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public - undefined - 2. private

 

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public - undefined - 2. private

참고로 접근제한자를 따로 지정하지 않을 경우(생략) 디폴트로 private이 적용됩니다. 

마찬가지로 같은 결과가 나오는것을 확인할 수 있습니다.

 

output:

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public - undefined - 2. private

 

그렇다면 private으로 지정한 값을 외부에서 보기 위해서는 어떻게 할까요?

 

해당값이 지정된 클래스외 다른 곳에서 접근할 수 있도록하는  중간 연결 다리(?)가 필요합니다.

 

즉, 아래와 같이 public 으로 구성된 함수를 같은 클래스 내부에 지정하고 그 함수를 통해 실행하는것입니다.

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public - undefined - 2. private

 

그 후 외부에서는 public으로 설정된 함수를 불러 실행하면 됩니다. 

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public - undefined - 2. private

 

 

3. protected

private 보다는 좀 더 프리한 버젼으로,

자기 클래스내부는 물론이고 자식 클래스까지 사용 가능합니다.

말로 표현하니 조금 애매한데요.

 

아래 코드를 보시면 protected로 정의된 변수가 있는 클래스 Player를 상속한 클래스 Player2가 있습니다. 

 

Player2Player1을 상속받은 자식클래스 즉 파생클래스인데요.

 

[c# 기초] c# 접근 제한자(Access modifier) / private, protected, public - undefined - 3. protected

 

앞서 정의에서 말했듯이 부모 class의 멤버 변수인 "Hp"를 자식클래스인 Player2에서 가져다 쓸 수 있습니다. 

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글