JAVA 기초 : 정보 은닉, 접근 제어자(default / public / private),

mark1106·2023년 7월 15일
0

JAVA

목록 보기
5/11

정보 은닉의 필요성

우리는 지금까지 객체를 만들며 필드, 생성자, 메소드를 외부에서 직접 접근할 수 있도록 클래스를 만들었다.

하지만 이 고유의 정보들을 외부에서 직접 접근하여 상태와 동작을 제어하면 보안상에 문제가 발생할 것이다.

따라서 우리는 클래스의 내부 데이터와 세부 구현사항을 외부로부터 감추는 정보 은닉이 필요하다.

이 외에도 정보 은닉이 필요한 이유는 다음과 같다.

  1. 데이터 보호 : 외부에서 무작위로 데이터를 수정하거나 손상시키는 것을 방지
  2. 구현 세부 사항 감추기 : 외부 코드에 영향을 최소화
  3. 인터페이스 제공 : 인터페이스를 명확하게 정의하여 가독성 향상
  4. 코드 유지 보수성 개선 : 다른 클래스나 모듈에 영향을 미치지 않아 코드의 변경 범위를 제한하여 버그를 줄임

접근 제어자

위에서 설명한 정보 은닉은 접근 제어자 private로 제어할 수 있다.
정보를 은닉하는 private를 알아보기 전에 접근 제어자가 무엇인가 살펴볼 필요가 있다.

접근 제어자란?

클래스와 클래스의 멤버(필드, 메소드, 생성자)를 사용할 때 접근할 수 있는 범위를 지정해주는 역할

접근 제어자 종류

1. public : public은 공개를 나타내며, 모든 클래스에서 접근이 가능하다.(다른 패키지 접근 O)
2. private : private는 비공개를 나타내며, 같은 클래스 안에서만 접근이 가능하다.
3. protected : 같은 패키지 안의 모든 클래스와, 다른 패키지의 자식 클래스에서 접근이 가능하다.
4. default : 접근 제어자를 지정하지 않으면 default로 설정되며 같은 패키지 안의 클래스에서만 접근이 가능하다.

공개 범위
public > protected > default(생략) > private

다음 코드를 통해 각 접근 제어자의 범위를 알아보자.

default

classYear, classroomNumver, studentNumber과 같이 필드를 선언할 때 접근 제어자 형식을 지정해주지 않으면 default 형식으로 설정이 된다.

위 default 형식의 필드(classYear, classroomNumver, studentNumber)들은 Student 클래스의 필드이므로 같은 chapter_2 패키지 안에 있는 Student 클래스(자신), Subject 클래스, Teacher 클래스, Test클래스`에서는 접근이 가능하다.

하지만 다른 패키지인 chapter_1 패키지에서는 접근하지 못한다.

public

String school은 Student클래스이지만 public 접근 제어자로 설정되어 있으므로 Student외 다른 클래스, 나아가 chapter_2이외 다른 패키지 chapter_1 패키지에서도 접근이 가능하다.

private

private로 설정된 name, gender는 자신 클래스(Student 클래스)를 제외하고 어떤 패키지, 클래스에서도 접근할 수 없다.

0개의 댓글