본문 바로가기

항해99

항해99 17일차 TIL1 - Protected 접근제한자 활용기

Try : 시도해본 것들

So : 그래서 뭘 느꼈는지

 

TRY

현재 진행중인 프로젝트의 패지키는 아래와 같습니다.

 

참고로 Bus, Taxi는 Vehicle의 자식 객체이입니다.

구현체와의 관계 때문에라도 Vehicle 객체는 bus/taxi 패키지 상위에 위치하는 것이 자연스러워 보였습니다.

 

문제는 처음에 택시/버스의 공통부분을 추려내기 위해 추상클래스를 아래와 같이 작성했습니다.

public abstract class Vehicle<Status> {
    Integer passenger;
    Integer basicCharge;
    Integer wallet;
    Status status;

 

그랬더니 자식 객체에서는 이런식으로 빨간줄이 뜨게 되었습니다.

접근제한자가 문제구나 싶었습니다. 처음에는 public을 선언해서 오류를 수정했습니다.

public으로 선언한다면 외부로부터 접근이 자유롭기 때문에 필드의 무결성을 지키기 어려워요.

public abstract class Vehicle<Status> {
   public Integer passenger;

그래서 protected를 사용했습니다. 책에서 읽었을 때는 잘 이해가 안됐는데 직접 해보니까 이해가 잘 됐습니다.

 

protected는 같은 패지키 혹은 자식 클래스에서만 접근이 가능합니다.

Bus, Taxi는 Vehicle과 다른 패키지에 존재하지만 자식 클래스이기 때문에 접근이 가능합니다.

 

SO

백문이 불여일타.