일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Java
- 변수
- FileInputStream
- 자바
- 코딩
- 인터페이스
- 코린이
- 새벽공부
- 다형성
- 인스턴스
- 졸리다
- ArrayList
- 메서드
- node.js
- 보조 스트림
- 백엔드
- exception
- try-catch
- 배열
- throws
- SSR
- 문자 단위 스트림
- 파이팅
- 상속
- 예외 처리
- 개발자
- MPA
- 자료형
- 초보개발자
- 바이트 단위 스트림
- Today
- Total
SHUSTORY
05-7 정보 은닉 본문
접근 제어자
객체 지향 프로그램에서는 '접근 제어자' 예약어를 사용해 클래스 내부의 변수나 메서드,
생성자에 대한 접근 권한을 지정할 수 있다.
접근 제어자 | 설명 |
public | 외부 클래스 어디에서나 접근 가능하다. |
protected | 같은 패키지 내부와 상속 관계의 클래스에서만 접근 가능하다. |
private | 같은 클래스 내부에서만 접근 가능하다. |
아무것도 없는 경우 | default이며 같은 패키지 내부에서만 접근 가능하다. |
7행에서 오류가 발생한다.
그 이유는 studentName 변수의 접근 제어자가 private이므로 외부 클래스의 접근이 허용되지 않기 때문이다.
get( ), set( ) 메서드
private로 선언한 변수를 외부 코드에서 사용하려면 해당 변수를 사용할 수 있도록 public 메서드를 제공해야 한다.
public 메서드가 제공되지 않는다면 해당 변수에 접근할 수 있는 방법은 없다.
이때 사용할 수 있는 것이 get( ), set( ) 메서드이다.
* 참고로 상단바의 Source - Generate Getters and Setter...를 클릭하여 원하는 함수(get / set)를 선택하여
직접 코드를 작성하지 않고도 편리하게 구현할 수 있다.
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 |