접근 제한자란?
멤버들은 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 결코 좋은 것은 아닙니다.
그런 이유로 프로그래머가 객체의 멤버들에게 접근 제한을 걸 수가 있는데 자바에서는 이를 접근 제한자라 합니다.
제한자 종류
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
01 | class 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 |
13 | public 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 | } |
21 | } |
[출처] 클래스와 객체(접근 제한자, 캡슐화) |작성자 나뭉이
'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 |