본문 바로가기
HELLO_WORLD/안드로이드_Android

[지식공유] 접근제어(public, private) 알고 사용하자

by 해피한 김과자블루스웨터 2019. 3. 18.




접근제어(public, private) 알고 사용하자




이미지 / pixabay



접근제어를 왜 써야되는가?


예전 문서들을 보던중 갑자기 접근제어에 대해 정리를 하고 싶어 졌습니다. 

언어를 처음 공부할때 도대체 이해가 안되던 기억이 나네요.


자바의 접근제어에 대해서 이해해 봅시다. 

자바에서 접근제어 키워드는 public, private, protected, default 가 있습니다. 

그냥 쓰면 되지 굳이 이딴걸 왜 만들었을까요?


이렇게 이해하면 쉽습니다.





이미지/pixabay/생각 사고 반영




어느날 철수는 한 프로젝트에 투입되게 됩니다.

(갑자기???)

철수는 클라이언트개발자로 활동중입니다.

프로젝트에 투입되자 경태 라는 코어(라이브러리, 클래스작성자라 칭함) 개발자를 만나게 됩니다.

거기서 철수가 하는일은 경태가 만든 코어 라이브러리(클래스로 꽉찬 상자 정도로 이해: api 정도로 이해하면 될듯)를 활용하여 업무 프로세스에 맞는 로직 개발을 하게 되는 것이죠!

여기서 경태가 하는 일은 철수들 에게 필요한 정보를 노출 시키고 그것을 활용하게 하는 일 입니다.

나머지 복잡한 처리는 철수들 이 알필요가 없기 때문에 감추고 싶어 하죠.

여기서 경태가 감추는 코드들은 내부적으로 매우 민감한 곳이고 누군가 만졌다 하면

대형 사고가 나는 그런 코드들 입니다. 설계자인 경태 빼고는 누구도 손댈수 없죠.


이 이야기에서 말하고자 하는것은 관계의 경계 입니다. 경태의 라이브러리를 통해 아마도 철수는 거대한 프로그램을 만들어 낼 것입니다. 철수 뿐만이 아닌 철수1,2,3,4 들이 사용하는 프로그램 이겠죠. 이들 역시 경태의 민감한 라이브러리 코드에 접근이 가능하다면 어떤일이 벌어질까요?


접근제어를 통해 이러한 경계를 만들수 있는데요. 클라이언트 개발자는 이 경계를 통해 내가 사용할 부분은 무엇이고 무엇은 신경 조차 쓸필요가 없는 알수 있게 됩니다. 경태 또한 클라이언트 개발자들이 사용하는 인터페이스를 신경쓸 필요없이 내부 구현을 수정하고, 생성할수 있습니다. 


물론. 정확한 규칙과 설계를 통해 구현되어 졌다면 말입니다.


- public 키워드는 간단합니다. 모두 사용해라. 입니다.

- private 키워드는 우리가 이야기한 그 경계에 대한 부분입니다. 이 키워드를 가진 클래스 , 메서드, 변수 등은 클래스 내부에서(작성자) 사용이 가능합니다. 즉 철수들은 쓰지 못하게 표시해둔 것이지요.

- protected는 private과 유사하지만 상속을 통한 사용만 허용합니다.

- default 키워드의 경우 위의 3가지(private, public, protected) 를 사용하지 않을때 암시적으로 붙는 접근제어 표시자 입니다. 패키지 내부에서는 public 처럼 작동하기에 패키지 접근 이라고도 불리웁니다.


쉽게 풀어보려고 현실적인 예를 들어서 설명해보았습니다.

이를 통해 자바에서 빼놓을 수 없는 접근제어에 대해 알아보았습니다. 

접근제어를 잘 사용 하면 약이지만 잘못 사용하면 혼돈의 카오스에 빠트리게 되지요.

차라리 아무것도 안 쓴것만 못하는 불상사가 발생합니다 ㅠㅠ (???)

그럼 이만…





댓글0