SHUSTORY

05-7 정보 은닉 본문

프로그래밍/JAVA

05-7 정보 은닉

어서오시우 2023. 2. 20. 06:38
728x90

접근 제어자

객체 지향 프로그램에서는 '접근 제어자' 예약어를 사용해 클래스 내부의 변수나 메서드,

생성자에 대한 접근 권한을 지정할 수 있다.

접근 제어자 설명
public 외부 클래스 어디에서나 접근 가능하다.
protected 같은 패키지 내부와 상속 관계의 클래스에서만 접근 가능하다.
private 같은 클래스 내부에서만 접근 가능하다.
아무것도 없는 경우 default이며 같은 패키지 내부에서만 접근 가능하다.

 

예제01

 

7행에서 오류가 발생한다.

그 이유는 studentName 변수의 접근 제어자가 private이므로 외부 클래스의 접근이 허용되지 않기 때문이다.

 

 

get( ), set( ) 메서드

private로 선언한 변수를 외부 코드에서 사용하려면 해당 변수를 사용할 수 있도록 public 메서드를 제공해야 한다.

public 메서드가 제공되지 않는다면 해당 변수에 접근할 수 있는 방법은 없다.

이때 사용할 수 있는 것이 get( ), set( ) 메서드이다.

 

get( ), set( ) 쉽게 만들기

 

* 참고로 상단바의 Source - Generate Getters and Setter...를 클릭하여 원하는 함수(get / set)를 선택하여

직접 코드를 작성하지 않고도 편리하게 구현할 수 있다.

 

예제02

public get( ) 메서드를 통해 private 변수에 접근해 값을 가져올 수 있다.

public set( ) 메서드를 통해 private 변수에 접근해 값을 지정할 수 있다.

 

즉 외부 클래스에서 private 변수에 직접 접근할 수는 없지만, public 메서드를 통하면 private 변수에 접근할 수 있다.

 

 

정보 은닉

변수를 public으로 선언하는 것과 변수를 private으로 선언하고 나서 그 변수를 사용할 수 있도록 public 메서드를 제공하는 것이 어떤 차이가 있을까?

 

클래스의 멤버 변수를 public으로 선언하면 접근이 제한되지 않아 정보의 오류가 발생할 수 있다.

이런 경우에는 오류가 나더라도 그 값이 해당 변수에 대입되지 못하도록 변수를 private으로 바꾸고 public 메서드를 별도로 제공하도록 한다.

 

이처럼 클래스 내부에서 사용할 변수나 메서드는 private으로 선언해서 외부에서 접근하지 못하도록 하는 것을

객체 지향에서 '정보 은닉'이라고 한다.

이는 객체 지향 프로그래밍의 특징 중 하나이며 자바에서는 접근 제어자를 사용하여 정보 은닉을 구현한다.

'프로그래밍 > JAVA' 카테고리의 다른 글

06-2 객체 간 협력  (1) 2023.02.23
06-1 this 예약어  (1) 2023.02.22
05-6 참조 자료형  (0) 2023.02.20
05-5 생성자  (1) 2023.02.20
05-4 클래스와 인스턴스  (0) 2023.02.20