호쌤
호쌤 Just For Fun

[Java] 은닉성

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[Java] 은닉성≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

[Java] 은닉성

Java 언어에서 객체지향의 은닉성을 표현하기 위한 접근한정자를 설명합니다.

#01. 은닉성이란?

멤버변수나 메서드가 객체에 노출되지 않도록 설정하는 기법

객체를 사용하는 측의 실수로 인한 기능의 오작동을 방지하기 위해, 클래스의 일부를 숨기는 처리를 말한다.

#02. 적용방법

변수의 이름이나 메서드 이름 앞에 접근 한정자를 지정한다.

1) 멤버변수와 메서드에 대한 적용

예약어 설명
public 이 키워드가 적용된 멤버변수나 메서드는 모든 곳에서 접근 가능하다.
일반적으로 모든 메서드 앞에 명시한다.
private 클래스 안에서만 사용가능하고, 객체를 통해 접근할 수 없다.
일반적으로 모든 멤버변수 앞에 명시한다.
protected 현재 클래스 내의 다른 자원이나, 같은 패키지 안에 존재하는 클래스와 하위 클래스에서 접근 가능하다. 잘 사용하지 않는다.
default 접근 한정자를 명시하지 않은 경우.
현재 클래스 내의 다른 자원이나 동일 패키지 내의 다른 클래스에서 접근 가능하다.
잘 사용하지 않는다.

SimplePrivate.java

1
2
3
4
5
6
7
8
9
10
11
12
PrivateTest {
    public int a;
    private int b;
}

public class SimplePrivate {
    public static void main(String[] args) {
        PrivateText pTest = new PrivateTest();
        pTest.a = 200;  // --> public이므로 문제 없음.
        pTest.b = 200;  // --> private이므로 객체를 통해서는 접근할 수 없다.(에러)
    }
}

#03. getter, setter

멤버변수가 은닉된 형태로 선언된 경우 프로그램의 가장 근본적인 목적인 데이터에 접근하는 방법이 사라지므로 메서드를 통하여 간접적으로 접근하는 방법이 마련되어야 한다.

getter, setter는 은닉된 멤버변수에 간접적으로 접근하기 위하여 정의된 메서드들을 의미하는 용어이다.

  • Getter : 은닉된 멤버변수의 값을 리턴 하기 위한 메서드
  • Setter : 파라미터로 전달된 값을 멤버변수에 복사하기 위한 메서드

메서드 작성 규칙

  • “get”, “set” 접두사 뒤에 변수이름을 첫 글자가 대문자인 형태로 명시
  • getter는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시
  • Setter는 연결된 멤버변수의 데이터 타입을 파라미터 형으로 명시
ex) 멤버변수 이름이 userName인 경우
1
2
3
4
5
6
7
public void setUserName(String userName) {
    this.userName = userName;
}

public String getUserName() {
    return this.userName;
}

크리에이티브 커먼즈 라이선스 ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪[Java] 은닉성≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.

comments powered by Disqus