접근제어자가 나타내는 접근가능 (=데이터를 가져올수있는 지) 여부는 아래와 같다
같은 클래스 | 같은 패키지 | 다른 패키지 지만 상속된 클래스 |
상속되지 않은다른 패키지 | |
public | O | O | O | O |
protect | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
이를 스타크래프트로 비유해보자
테란 유닛 메딕은 지상 생체 유닛이라면 타 종족의 유닛이라도 체력을 회복시켜준다
패키지를 종족별 유닛으로 구분한다고 치면 메딕의 데이터는 아래와 같다고 하자
테란 유닛.pakage
↘ 지상생체유닛.class
↘ 회복.method 를 가짐
우리의 메딕은 메딕영웅이라 우리가 아는 것과 달리 치료 대상의 범위를 멋대로 조정가능하다고 가정하자
new 메딕영웅 |
테란 지상생체유닛 (같은 클래스) |
테란 유닛 (같은 패키지) |
다른 종족 유닛 extend 지상생체유닛 (다른 패키지 지만 상속된 클래스) |
다른 종족 유닛 (상속되지 않은 다른 패키지) |
|
public | 메딕영웅1 | O | O | O | O |
protect | 메딕영웅2 | O | O | O | X |
default | 메딕영웅3 | O | O | X | X |
private | 메딕영웅4 | O | X | X | X |
메딕영웅 class는 회복.method 를 가지고 있다
접근제어자의 회복 메소드의 작동 여부를 통해 이해하자
public 을 사용한 메딕영웅1 의 경우 모든 종족, 모든유닛에게 회복을 사용가능하다 (커세어 회복가능)
protect 를 사용한 메딕영웅2의 경우 테란 지상유닛, 테란 유닛, 지상생체유닛 클래스를 상속한 다른 종족 유닛까지 회복 가능하다 (질럿 회복가능 / 커세어 회복불가)
default 를 사용한 메딕영웅3의 경우 테란 지상생체유닛, 테란 유닛에서만 사용 가능하였다 (레이스 회복가능 / 질럿, 커세어 회복불가)
privat를 사용한 메딕영웅4의 경우 테란 지상생체유닛에만 사용 가능하였다 (마린 회복가능 / 레이스, 질럿, 커세어 회복불가)
뭔가 어거지로 설명했지만 그래도 이해가 되면 좋겠다
'개발 노트 > 기초 지식' 카테고리의 다른 글
[java] this 와 super (0) | 2022.04.25 |
---|---|
[java] 상속 extends (0) | 2022.04.25 |
[java] static 의 이해 (0) | 2022.04.21 |
[java] 데이터 타입의 형변환, 음수의 표현 (0) | 2022.04.18 |
[java] 구구단 강의에서 Integer.parsInt 를 쓴 이유 (0) | 2022.04.16 |
댓글