내일배움캠프 13일차 TIL - 접근 제한자 protected

권태하·2024년 5월 1일
post-thumbnail

접근 제한자

접근 제한자는 외부로부터 타입으로의 접근을 제한할 때 사용하는데,

  • public
  • private
  • protected
  • internal

이렇게 네 가지가 존재한다.
이 중 내가 주로 사용하는 3가지 접근 제한자를 간단히 정의하면 다음과 같다.

public

public은 외부에서 무제한으로 접근을 허용하는 접근 제한자이다.

private

private은 클래스나 구조체 외부에서는 접근을 모두 불허하는 접근 제한자이다.

protected

protected는 상속 받은 객체에서만 접근을 허용하는 접근 제한자이다.

사용처

각 접근 제한자를 사용하면 객체 지향 설계를 하는 데 도움이 된다.
오늘 유용하게 사용한 접근 제한자는 protected인데, 사용은 다음과 같다.

    internal class Enemy
    {
        protected string name;
        protected int id;
        protected int lv;
        protected int hp;
        protected int atk;
        protected bool isDead = false;
        protected int exp;
        protected int[] drops = new int[2];
        protected Random random = new Random();
    }

이런 변수를 가진 적 클래스를 생성했는데, 처음엔 외부 접근을 제한하려고 private으로 모든 변수를 설정했었다.
하지만, 적을 다양하게 만드는 과정에서 서로 다르게 변수 값을 저장하기 위해
상속시켜서 클래스를 추가했다.

    public class BigRat : Enemy
    {
	}

이 때 변수 값을 저장하려고 했는데 에러가 뜨길래 고민을 했는데, 확인해보니 접근 제한자가 부모 클래스에서 모두 private으로 설정이 되어 있었던 것이다.
그렇다고 public으로 변수를 관리하면 다른 곳에서 변수 수정이 될 수 있기 때문에 고민했는데, 바로 강의에서 들었던 protected가 생각이 나서 적용해 봤더니 상속 받은 클래스에서만 수정 가능하게 되었다.

profile
스터디 로그

0개의 댓글