본문 바로가기
프로그래밍/Java

접근 제어자

by 3.14pie 2023. 1. 8.

생성자 - 개체가 생성과 동시에 유효한 상태를 보장한다.

접근 제어자(Access Modifier) - 어떤 외부자가 개체 속에 접근할 수 있는지 정의한다. 개체 외부에서 개체의 상태에 직접 접근하는 것을 막을 수 있다. 개체의 상태를 변경하는 주체는 개체 자신인 것이 이상적이다.

public - 누구나 접근이 가능하다. 주로 메서드에 사용한다.

protected - 자식들만 접근이 가능하다.

생략할 경우 - 같은 패키지에 속한 클래스만 접근이 가능하다.(public) 다른 패키지에서는 private처럼 작동한다.

private - 외부 접근이 불가능하다. 내부에서만 접근 가능하다. 주로 멤버 변수에 사용한다. 멤버 변수는 메서드를 통해서만 접근하는 것이 좋다.(캡슐화, 추상화) 코드 중복을 막기 위해서 클래스 안에 메서드에 사용할 수 있다.

 

getter - get ~ 라는 이름의 메서드는 보통 어떤 정보를 가져오는 메서드일 때 사용한다. 멤버 변수를 저장하지 않고 필요할 때마다 사용할 수 있다.

setter - set ~ 라는 이름의 메서드는 어떤 정보를 변경하기 위한 메서드일 때 사용한다. 추가적인 로직을 실행할 수 있다.

 

제일 좋은 습관?

- 멤버 변수는 private

- 새 개체는 생성될 때부터 유효한 것이 이상적

- getter는 자유롭게 추가해도 괜찮다. 굳이 알 필요 없는 정보는 보여주지 않아야 하지만, 큰 문제는 없음. 레퍼런스 반환할 때는 확인

- setter는 데이터가 바뀌므로 고민하고 추가

 

캡슐화 - class(연관된 데이터와 동작들을 한 곳에서 처리)와 private 멤버 변수(외부에서의 접근 금지)

추상화 - private 멤버 변수와 getter/setter, 동작없이 데이터만 있는 클래스가 늘어날 수도 있다. 어떻게 추상화 해야 하는지 객관적인 기준이 없다.

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

Static, 디자인 패턴, 내포 클래스  (0) 2023.01.13
Static  (0) 2023.01.11
클래스  (0) 2023.01.05
개체 지향의 특성  (0) 2023.01.05
Java란?  (0) 2022.12.14