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
백문이 불여일타.
'항해99' 카테고리의 다른 글
항해99 3주차 WIL - 상속과 인터페이스 (0) | 2022.12.25 |
---|---|
항해99 18일차 TIL1 - JdbcSQL 사용 중 오류가 발생했어요! (0) | 2022.12.24 |
항해99 16일차 TIL1 - 익명 객체는 왜 사용할까요? (2) | 2022.12.22 |
항해99 15일차 TIL2 정적 리소스 캐시 관리 addResourceHandlers (2) | 2022.12.21 |
항해99 15일차 TIL1 - 캐시를 사용하려다... 의식의 흐름대로 (0) | 2022.12.21 |