본문 바로가기

Language/Java

JAVA 접근 제한자 (public, private, protected, default)

접근 제한자란?

멤버들은 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 결코 좋은 것은 아닙니다.

그런 이유로 프로그래머가 객체의 멤버들에게 접근 제한을 걸 수가 있는데 자바에서는 이를 접근 제한자라 합니다.

 

제한자 종류

i) public      : 모든 접근을 허용

ii) protected : 같은 패키지(폴더)에 있는 객체와 상속관계의 객체들만 허용

iii) default    : 같은 패키지(폴더)에 있는 객체들만 허용

iv) private    : 현재 객체 내에서만 허용

 

 

접근제한자 사용

클래스       : public, default

생성자       : public, protected, default, private

멤버변수    : public, protected, default, private

멤버메소드 : public, protected, default, private

지역변수    : 접근제한자 사용 불허

 

캡슐화란?

항상 은닉화를 전제로 합니다관련이 있는 데이터 그리고 동작들을 하나로 묶어 요약하고 사용자에게는 내부적인 접근을 허용하지 않는 대신에 사용의 편의성을 제공해 주는 것입니다.

데이터 보호의 장점    : 은닉화를 통해 데이터의 접근을 제어할 수 있습니다.

유지 보수성의 장점    : 객체에 대한 수정 작업으로 인해 객체 활용도에 문제가 발생한다면

                                   제품 하나에 대한 upgrade가 상당히 부담스러울 것입니다자바에서는

                                   각 기능을 하나의 모듈(부품)처럼 활용하여 객체간의 이식성이 높고

                                   독립적인 면을 유지하는 장점이 있습니다.

사용자 편의성의 장점 : 전기 압력밥솥이 어떤 원리와 어떤 과정으로 밥을 지어내는지는

                                  알 필요 없이 그냥 사용법만 익혀서 사용합니다.

ex) 돈을 입금할 때은행원에게 모든 동작을 넘겨줍니다그러면 사용자는 내부 동작을 생각할 필요 없이 목적한 일을 할 수 있습니다.

 

Sample Code

01class Variable{
02    private int a;  //은닉화
03     
04    //캡슐화
05    public void setA(int n){
06        a = n;
07    }
08    public int getA(){
09        return a;
10    }
11}
12 
13public class MethodTest2 {
14    public static void main(String[] args) {
15        Variable v = new Variable();       
16        //System.out.println(v.a); //호출불가
17         
18        v.setA(100);
19        System.out.println(v.getA());
20    }


'Language > Java' 카테고리의 다른 글

Interface vs Abstract  (0) 2014.02.27
중첩 클래스(Nested Class) [자바 4대 중첩 클래스]  (3) 2014.02.27
Java Reflection 개념 및 사용법  (4) 2014.02.27
JAVA ThreadLocal  (0) 2014.02.27
Java Code Convention  (0) 2014.02.24