반응형

정보은닉 ( Information Hiding )

   - 여기서의 정보는 인스턴스 변수를 의미.

   - 정보를 은닉한다는 것은 인스턴스 변수를 외부에서 보지 못하도록 숨긴다는 말과 같다.

   - 숨기는 이유

      -> 클래스 사용자가 잘못된 값을 인스턴스 변수에 저장하지 않도록하기 위해서

      예를 들어, 음수이면 인스턴스 변수에 값이 저장되지 않아야 할 때, 인스턴스 변수가 외부에서

      보인다면(접근가능하다면) 음수 값도 저장될 수 있다.

   - 이러한 클래스의 설계를 정보 은닉이라 한다.

 

접근 수준 지시자(Access-level Modifiers)

  • 클래스 정의 대상 : public, default 선언 가능
  • 인스턴스 변수와 메소드 대상 : public, protected, private, default 선언가능

   - 클래스 정의 대상의 publicdefault 선언이 갖는 의미

      -> public : 어디서든 인스턴스 생성이 가능하다.

      -> default : 동일 패키지로 묶인 클래스 내에서만 인스턴스 생성을 허용한다.

 

   - 인스턴스 멤버 대상의 publicdefault 선언이 갖는 의미

      -> public : 어디서든 접근 가능하다.

      -> default : 동일 패키지로 묶인 클래스 내에서만 접근이 가능하다.

   - 인스턴스 멤버 대상의 private 선언이 갖는 의미

      -> private : 동일 클래스에 정의된 메소드 에서만 접근 가능.

   - 인스턴스 멤버 대상의 protected 선언이 갖는 의미

      -> protected : default 선언이 허용하는 접근 + 상속관계의 다른 클래스에서의 접근도 허용한다.

 

※ 인스턴스 멤버를 대상으로 하는 public, protected, private, default 선언에 대한 정리

지시자

클래스 내부

동일 패키지

상속받은 클래스

이외의 영역

private

O

X

X

X

default

O

O

X

X

protected

O

O

O

X

public

O

O

O

O

 

캡슐화 (Encapsulation)

   - 하나의 목적을 이루기 위해 관련 있는 모든 것을 하나의 클래스에 담아 두는 것

   - 클래스를 적절히 캡슐화시키면 프로그램이 간결해진다.

   - 하나의 클래스 혹은 포함관계를 통하여 캡슐화할 수 있다.

 

[참고자료]

윤성우의 열혈 Java 프로그래밍

반응형

+ Recent posts