티스토리 뷰

Java

[Java] 접근 제어 지정자

nc2u 2018. 10. 27. 18:31

객체 지향 프로그래밍 언어인 Java는 클래스의 멤버에 대한 접근을 제어함으로써 객체를 잘못 사용하는 것을 방지하고, 데이터의 값이 적절하지 못하게 변경되는 것을 방지한다.



자바의 접근 제어 지정자

멤버 접근 제어는 publicprivateprotected 이 3가지의 지정자로 이루어 진다. 접근 가능 여부는 아래 표로 요약된다.


접근지정자클래스패키지자식 클래스전체 세계
publicOOOO
protectedOOOX
없음OOXX
privateOXXX

간단한 클래스를 이용해서 접근 제어를 이해하여 보자.

class A {
    private int a;     // 전용
    int b;             // 디폴트 
    public int c;      // 공용
}

public class Test {
    public static void main(String[] args) {
        
        A obj = new A();   // 객체(인스턴스) 생성

        // obj.a = 10;     // 전용 멤버는 다른 클래스에서는 접근이 안 됨
        obj.b = 20;        // 디폴트 멤버는 접근할 수 있음
        obj.c = 30;        // 공용 멤버는 접근할 수 있음
    }
}

위의 클래스를 그림으로 그려보면 다음과 같다.

각 변수들을 접근 제어의 차원에서 분석해보자.


  • 변수 a는 private로 정의되었으므로 변수 a는 클래스 A안에서는 사용할 수 있다.
  • 변수 b 앞에는 아무런 접근 지정자가 붙지 않았다. 이런 경우 동일한 패키지에 있는 클래스라면 얼마든지 사용이 가능하다. 위의 코드에서는 패키지를 지정하지 않았기 때문에 클래스 A와 클래스 Test는 Default 패키지에 속하게 된다. 따라서 Test 클래스에서도 b를 사용할 수 있는 것이다.
  • 변수 c는 public으로 정의되어 있기 때문에 얼마든지 외부에서 사용이 가능하다.

위와 같이 변수뿐 아니라 메소드의 경우에도 같다. 메소드를 정의할 때도 앞에 privatepublicprotected를 붙일 수 있고 그 의미는 변수의 경우와 동일하다.

 


'Java' 카테고리의 다른 글

[Java] super 키워드  (0) 2018.10.27
[Java] 고급 배열  (0) 2018.10.27
[Java]객체 지향 프로그래밍의 특징  (0) 2018.10.27
[Java] 내장 클래스  (0) 2018.10.27
[Java] 자료형(data type)의 종류  (0) 2018.10.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크