캡슐화(Encapsulation) → Information Hiding(은닉성)
- public interface, private implementation
인터페이스는 공개, 구현은 감춘다.
- 캡슐화의 장점
① 데이터 보호
데이터를 인터페이스로 감싸줌으로 인해서 Data를 보호할 수 있다. 데이터를 담고 있는 변수를 private로 선언해서 외부의 직접 접근을 막고, set, get 메소드를 통해서 간접접근을 할 수 있도록 한다.
변경 → Setter Method | 조회 → Getter Method |
private int stock; public void Setstock(int s) { stock = s; } | private int stock; public int Getstock() { return stock; } |
<Stock Property>
* Instance 변수의 접근제한자는 private으로 하여 직접 접근을 막고 그 변수의 값을 변경하는 setter와 조회할 수 있는 getter 메소드를 public으로 제공하라.
* Setter 구문 : public void set변수명(매개변수)
ex) private int age → public void setAge(int a)
* Getter 구문 : public 변수type get변수명()
ex) public int getAge()
* type이 boolean일 경우, 변수 type이 set, get보다는 is변수명()으로 쓰인다.
② 유지보수성
외부에 인터페이스로 감싸주었기 때문에 내부에 구현이 바뀌어도 외부에서 보기에는 인터페이스만 보기 때문에 변화를 느끼지 못한다. 예를 들자면 곰플레이어의 내부 구현이 어떻게 되었는지 사용자는 알 필요도 없이 재생하고 싶다면 ▶ 버튼을 클릭하면 그만이다.
③ 사용자 편의성
사용자는 내부구현이 바뀌어도 여전히 인터페이스는 그대로이기 때문에 늘 사용하던대로 사용하면 된다. 만약 캡슐화하지 않는다면 내부구현이 달라질때마다 새로운 사용법을 익혀야할 것이다.
지역변수(Local Variable, Method Variable)
- 메소드 안에 선언한 변수(매개변수도 지역변수)
① 사용범위 : 메소드 수행시(메소드의 선언부 실행에서부터 메소드 종료까지), 외부에서 호출(접근) 불가
② 실행 Stack 메모리 영역에 저장 vs 객체는 Heap영역
③ 묵시적(deafault) 초기화가 존재하지 않는다.
④ Temporary Variable
⑤ This : JVM이 자동적으로 this라는 지역변수를 만들어 준다. 예를 들어 Calculator 클래스의 sum 메소드가 int의 sum인지 double의 sum인지 모른다. 그 때에 this를 통해서 자동으로 type을 구별할 수 있다.
This
① Overloading Constructor(생성자)
② 현재 일하는 생성자 혹은 메소드를 소유한 객체를 가리키는 Local Variable
→ 현재 일하는 객체의 주소값을 가진다. Instance 메소드나 생성자 호출시 실행 Stack 영역에 가장 먼저 올려준다.
'Wanna be a Programmer > Java Programming' 카테고리의 다른 글
Java Programming - 조건문, 반복문, 배열 (0) | 2012.07.01 |
---|---|
Java Programming - 데이터 타입, Cast 연산자 (0) | 2012.07.01 |
Java Programming - 생성자, Overloading, 접근제한자 (0) | 2012.07.01 |
Java Programming - 자바의 기초 (0) | 2012.07.01 |
Java Programming - 객체지향 vs 절차지향, 객체와 클래스 (0) | 2012.04.23 |