본문 바로가기

언어/Java

접근제어자(Access Modifier)

※ 개발자 A가 개발한 코드의 멤버변수, 저장소 이름 등을 다수의 사람들이 쓰기 때문에 데이터의 안정성 보장을 위해 개발자 B가 접근하지 못하도록 할 필요가 있다. → 접근제한자를 설정한다

 

접근제어자(Access Modifier) 선언위치 (ㅇㅇㅇ앞)
클래스 멤버변수 메서드
public 누구나 접근 가능
protected 동일패키지, 다른패키지의 하위클래스에서 접근 가능  
default(package) 동일패키지에서 접근 가능, 잘 사용은 하지 않는다.
private 자기 클래스에서 접근 가능  

: 접근제어자 아무것도 안붙은 상태 = default 상태.

  proteced : 동일패키지, 다른 패키지의 하위클래스에서 접근 가능(동일 패키지 또는 자식이면 접근 가능) 제공은 하나 권장하는 방법은 아님.

  외부에서 직접 접근 불가능하나 메서드를 통해 접근 가능하다.
  값을 확인할때도 메서드를 통해 그 데이터를 조회 가능함.

private String prodNo; 하면 외부에서 직접 접근 못해서 에러발생

 

※ 캡슐화 : 자료는 직접노출하지 않지만 (정보은닉) 그 정보에 접근할 수 있는 기능을 제공하는 것.
외부에 노출된 기능을 통해 노출되지 않은 자료를 접근하게 하는 것
캡슐화를 위한 기능들은 public으로 노출시켜주고 자료는 직접 접근 못하도록 가려야한다.

(public : 접근 범위와 관련된 예약어, static : 객체 생성과 무관하게 쓴다)

 

visibility

Private : private부터 default, package... 문서에 노출

Package : package 상태만 노출(private빼고 default, public 노출)

Public : public용 자료들만 노출

-  public으로 document 다시 만들면, 
   private String prodNo;
   private String prodName;
   private int prodPrice;
   private로 바꿔서 사용설명서의 field summary 사라졌음

 

cf) constructor summary document에 안보여도
   무조건 있음 생성자는. 사용설명서에 노출이 안됐을뿐. 생성자가 없는게 X
   즉, 그 생성자가 private, 사용자입장에선 노출된것만 쓰면됨.

 

※ 왜 set/get으로 메서드를 만드는가?
자바 bin(=자바 컴포넌트(Component))의 조건에 만족하기 위해서. 만족하지 않으면 프레임워크 쓸 수 없다.

가장 작은 단위는 객체. 
컴포넌트 Component는 재사용이 될만한 좀 더 큰 덩어리.
이 컴포넌트를 자바에선 자바빈이라고 한다.

 

자바빈 - 자바컴포넌트 조건 4개
1) public class
2) public 매개변수없는 생성자
3) 프로퍼티용 member variable는 public이면 안됨.

    그 컴포넌트의 property(property는 객체의 멤버변수/속성)는 public이면 안됨
4) 프로퍼티용 public setter/getter 메서드


property의 setter getter 메서드가 public으로 제공되어야한다.
property가 boolean 타입이면 is로 만들어야함.

set/get 메서드 만들 때 소문자로 시작하고 카멜케이스 지켜서
property 이름의 첫글자는 대문자
ex) setProdName/getProdName

'언어 > Java' 카테고리의 다른 글

Product 예제 1  (0) 2023.07.31
오버로드(Overload)  (0) 2023.07.31
생성자  (0) 2023.07.31
this  (0) 2023.07.28
문서용 주석 document comment  (0) 2023.07.28