0. 요약
- 접근 제어자(Access modifier)의 접근가능 범위
class | Package | Subclass same Package |
Subclass different Package |
World | |
public | O | O | O | O | O |
protected | O | O | O | O | X |
no-modifier | O | O | O | X | X |
private | O | X | X | X | X |
● public
- 변수나 메서드를 누구나 접근 가능하게 만드는 접근제어자
- 어디서든 누구나 접근 가능하다.
● protected
- 외부에서의 접근은 불가능하나, 다른 패키지에서의 접근은 가능하다
● no-modifier
- 접근제어자가 설정되지 않은 변수 혹은 메서드
- 같은 패키지 안에서만 접근 가능하다
● private
-같은 클래스 안에서만 접근이 가능하다
예시
아래와 같이 패키지를 설정하였다 (city2는 무시)
town1 패키지 안에 Market이라는 클래스가 있다
Market안에서 apple, orange, grape 이 세 가지의 수를 골라 구매할 수 있다
package org.City.town1;
public class Market {
public int apple;
public int orange;
public int grape;
}
shopping이라는 클래스를 통해 접근 가능한 범위를 알아보겠다
package org.City.town1;
public class shopping {
public static void main(String[] args) {
shopping market = new shopping();
market1.apple = 1;
market1.orange = 2;
market1.grape = 3;
}
}
1. public
- 어디서든 접근이 가능하다
같은 클래스 | 같은 패키지 | 다른 패키지 | |
shopping 위치 |
|||
결과 | 성공 | 성공 | 성공 |
2. Protected - 비상속
- 같은 패키지만 접근이 가능하다.
같은 클래스 | 같은 패키지 | 다른 패키지 | |
shopping 위치 |
|||
결과 |
성공 | 실패 | 실패 |
2. Protected - subclass
package org.City.town1; //경로
public class shopping extends Market{
public static void main(String[] args) {
shopping market = new shopping();
market.apple = 1;
market.orange = 2;
market.grape = 3;
}
}
같은 패키지 | 다른 패키지 | |
shopping 위치 |
||
결과 |
3. Private
- 같은 클래스만 접근 가능하다.
같은 클래스 | 같은 패키지 | 다른 패키지 | |
shopping 위치 |
|||
결과 |
성공 | 실패 | 실패 |
'Lang > Java' 카테고리의 다른 글
[java] Stream 정의, 기본 함수, 파이프라인 (0) | 2023.07.25 |
---|---|
[spring] IoC 컨테이너 (0) | 2023.06.08 |
[java] 예외처리 (0) | 2023.06.04 |
[java] 추상화와 인터페이스 (0) | 2023.06.04 |
[java] 객체 지향 프로그래밍 (0) | 2023.06.04 |