Java

접근 제어자

공부처음하는사람 2024. 5. 28. 23:08

자바는 public, private 같은 접근 제어자(access modifier)를 사용한다. 

접근 제어자를 사용하면 해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 관리할 수 있다.

 

이해를 한 내용들은 생략을 하자면..

 

기존 코드를 이어받게 되었을 때, 요구사항을 잘 모르는 상태에서 private으로 접근이 제한되어있지 않다면

새로운 개발자가 기능을 추가할 때 치명적 오류가 발생할 수 있다.. 해당 필드에 직접 접근을 막기위해 private을 사용한다.

 

private : 모든 외부 호출을 막음

default : 같은 패키지 안에서의 호출은 허용

protected : 같은 패키지 안에서 호출 허용 + 패키지가 달라도 상속관계 호출은 허용

public : 모든 호출 허용

 

private -> default -> protected -> public 순으로 스코프가 넓어진다.

 

접근 제어자 - 클래스 레벨

클래스 레벨의 접근 제어자는 public, default만 사용 가능하다.

하나의 자바 파일에 public 클래스는 반드시 파일명과 이름이 같아야한다.

하나의 자바 파일에 default 접근 제어자를 사용하는 클래스는 무한정 만들 수 있다.

 

 

캡슐화

캡슐화는 객체 지향 프로그래밍의 중요한 개념이다. 캡슐화는 데이터와 해당 데이터를 처리하는 메서드를

하나로 묶어서 외부에서의 접근을 제한하는것을 말한다. 캡슐화를 통해 데이터의 직접적인 변경을 방지하거나 제한할 수 있다.

요약하면 속성과 기능을 하나로 묶고, 외부에 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것

 

그럼 어떤 것을 숨기고 어떤 것을 노출해야 하나?

 

1. 데이터를 숨겨라

캡슐화에서 숨겨야 할 것은 속성(데이터)이다.

객체 내부의 데이터를 외부에서 함부로 접근하게 되면, 클래스 안에서 데이터를 다루는 모든 로직을 무시하고 데이터를 변경할 수 있다.

이게 지켜지지 않는다면 캡슐화가 깨지는 것이다

*객체의 데이터는 객체가 제공하는 기능인 메서드를 통해서 접근해야 한다.

 

2. 기능을 숨겨라

객체의 기능 중에서 외부에서 사용하지 않고 내부에서 사용하는 기능들이 있다. 이런 기능도 모두 감추는 것이 좋다.

자동차 예: 우리는 액셀과 핸들정도만 알면 된다. 엔진 조절기능, 배기 등 자세한 기능까진 알 필요가 없다.

 

데이터는 모두 숨기고, 기능은 꼭 필요한 기능만 노출하는 것이 좋은 캡슐화이다.

'Java' 카테고리의 다른 글

상속  (0) 2024.06.07
final  (0) 2024.06.06
생성자  (0) 2024.05.15
객체 지향 프로그래밍  (1) 2024.05.08
기본형과 참조형  (0) 2024.05.07