본문 바로가기
Lang/Java

[java] 접근 제어자 - public, protected, private 간단 정리 및 예시

by 상똥 2023. 10. 18.

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