티스토리 뷰

Java 공부일지

접근자와 설정자

AleXtep 2018. 3. 3. 17:15

우리는 객체지향언어의 '상추다캡' 에대해서 공부를 해보았는데 그중 캡슐화의 목적중 정보 은닉(information hiding) 이라는 것이 있었는데 기억나세요? 그 정보은닉이란 구현의 세부사항을 클래스 안에 감추는 것을 말합니다. 앞에서 배웠던 접근 제어중 private을 변수 앞에 적게 되면 외부의 클래스에서 접근할수 없게되죠 그렇기 때문에 클래스의 설계는 아래의 그림과 같이 설계하는게 좋습니다.


 변수는 안에 감추고, 메소드들은 외부에서 사용하도록 허용하는 것 입니다!


그런데 말입니다.... 클래스 안에 저장된 필드값이 꼭 필요한 경우는 어떻게 하나요??? 이경우에는 어떤 특수한 메소드가 안에있는 변수를 읽어서 외부로 전달해주면 될 것 입니다. 내부의 필드와 관련된 메소드가 두개가 있는데 고거시 바로 접근자(getters)와 설정자(setters)입니다. 대게 get이나 set이 메소드명 앞에 붙게 되죠! 그럼 예문을 보면서 이해해 봅시다!





위를 보시면 Account에서 private으로 주민등록번호, 이름, 돈 이렇게 3개의 변수를 생성하였고, 그아래에는 getter와setter 메소드를 생성하였습니다. getter에서는 반환형을 지정해주고 반환을 이름과 돈으로 하였습니다. 그리고 그아래에 setter에서는 반환형은 없지만 이름이나 돈의 액수를 받아서 private의 변수 안에 저장하였습니다. 이렇게 함으로써 Account클래스와 다른 AccountTest 클래스 에서도 접근이 가능하였고, Account클래스 안의 필드를 직접이 아닌 간접적으로 접근하고 설정하여 보았습니다. 허나 진정으로 이렇게 뭣하러 복잡하게 하느냐.. 하시는 분들이 아마 계실겁니다. 직접 이름을 입력하고 돈을 입력하면 되는데 무엇하러 복잡하게 간접적인 접근을 하느냐 하시는 분들을위해 깜짝 선물을 준비했습니다 ㅎㅎ


*접근자와 설정자의 사용이유*

1. 접근자와 설정자를 사용해야만 나중 클래스를 업그레이드할 시 편리합니다

2. 접근자에서 매개변수를 통해 잘못된 값이 넘어올때 사전에 이를 차단할수 있습니다.

3. 필요할 때마다 필드값을 계산하여 반환할수 있습니다.

4. 접근자만을 제공하면 자동적으로 읽기만 가능한 필드를 만들수 있습니다.



 

'Java 공부일지' 카테고리의 다른 글

생성자 응용하기  (0) 2018.03.05
생성자(Constructor)  (0) 2018.03.05
접근제어  (0) 2018.03.03
String 클래스 사용  (0) 2018.03.02
UML  (0) 2018.03.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함