자바(Java) 의 접근 제어
자바는 모든 것을 클래스로 만들어 객체화시키는데 이를 `캡슐화`라고 한다. 그러면 여러 개의 만들어진 클래스가 각기 상호 독립적으로 존재한다.
이렇게 클래스를 만들어 놓고 외부에서 필드(변수)에 마음대로 접근하여 변경할 수도 있지만 이건 좋은 방법이 아니다. 명료한 프로그램을 만드는데 방해가 될 뿐더러 효율이 떨어지기도 마찬가지다. 비정상적인 접근이나 정보자료의 원치 않는 변경이 생길 수도 있다.
이런 관계로 자바에서는 객체의 메소드와 변수에 대해 외부의 접근을 제한하는 기능이 있다. 객체는 폐쇄가 기본이다. 그러므로, 접근할 때 제한이 가해지면 직접 들어가서 볼 수는 없고, 일단 `물어보아야` 한다.
접근을 제어하는 키워드로는 private, protected, public, default(기본)가 있다. public은 누구나 마음대로 접근이 가능하다는 것이므로 굳이 긴 설명이 필요없다.
`private` 로 선언되는 클래스는 외부에서 절대로 접근할 수 없다. 오로지 해당 클래스 내부의 메소드 만으로 접근 가능하다. 상속된 하위클래스도 접근이 안 된다. 제일 강력한 접근 제어로 `정보 은닉`을 위한 장치이다.
`protected`는 같은 패키지나 상속된 하위클래스까지 접근을 허용한다. 상속이 된 경우에는 패키지가 달라도 상관없다.
접근제어에 아무런 명시를 하지 않으면 기본(default) 접근제어가 실행되는데 이때에는 상속 여부를 떠나 오직 같은 패키지에서만 접근이 가능하다. 상속되었더라도 패키지가 다르면 접근할 수 없다. friendly라고도 한다.
'ICT와 AI 정보' 카테고리의 다른 글
E-IDE와 SATA 겸용 외장 HDD 케이스 (22) | 2010.08.09 |
---|---|
아이리버(Iriver) 딕플 D31 Edu의 기능들 둘러보기 (4) | 2010.07.25 |
전자사전. 아이리버(Iriver) 딕플 D31 Edu (0) | 2010.07.24 |
자바(Java) 배열(Array), 해쉬테이블(Hashtable), 그리고 벡터(Vector) (0) | 2010.07.07 |
자바(Java) 추상 클래스(Abstract Class)와 인터페이스(Interface) (0) | 2010.07.07 |
자바(Java)의 `상속`과 다형성(Polymorphism) (0) | 2010.07.07 |
자바 생성자(Constructor)와 오버로딩(Overloading) (0) | 2010.07.07 |
자바(Java)의 객체지향(OOP) 프로그래밍 기초개념 (0) | 2010.07.06 |