접근제한자
접근제한자란, 클래스에서 멤버 변수나 메서드에 접근할 수 있는 권한을 규정하는 문법이다.
public, protect, default, private로 구분된다.
- public | 클래스 외부에서 자유롭게 접근가능
- protected | 같은 패키지 또는 자식 클래스에서만 접근 가능
- default(기본) | 접근제한자의 선언이 없을 시 설정. 같은 패키지에서만 접근 가능
- private | 외부에서 절대 접근 불가
용도, 패턴
객체 지향 문법은 추상화와 캡슐화를 지향한다.
이는 개발자의 입장에서 객체 내부를 임의로 변형할 수 없게 제한함으로써 유지 보수 부담 감소,
프로덕션의 관점에서는 유저가 프로그램의 중요 데이터를 건드릴 수 없게 하여 보안 개선을 가져다준다.
접근제한자는 이런 목적을 달성하기 위한 수단으로서, 외부에서의 접근 권한을 규정한다.
즉, 일반적인 패턴은 중요한 데이터는 protect나 private로 외부에서 접근하지 못하게 막는다.
대신, getter와 setter를 public으로 설정하여 제한적인 참조를 허용한다,
선언
변수나 메소드의 선언 단계에서 가능하다.
public class LottoGame {
private int reward;
private ArrayList<LottoType> lottos;
private String username;
public LottoGame(String username) {
this.reward= 0;
this.lottos = new ArrayList<LottoType>();
this.username =username;
}
public int getReward() {
return reward;
}
}
데이터 은닉
접근제한자로 직접적인 접근을 제한하여 데이터를 객체 내부로 숨기는 것을 데이터 은닉이라 부른다.
은닉된 데이터를 읽고 수정할 필요가 있을 때는 외부 인터페이스를 열어주는데,
이 때 일반적으로는 get, set을 붙인 메소드를 만든다.
(ex: getUsername, setUsername)
이를 각각 getter, setter라 부른다.
setter은 은닉된 변수가 생성자함수로 초기화된 시점 이후에 변형될 필요가 있을 시 사용한다.
이클립스에서 getter, setter의 자동완성 기능
마우스 우클릭 – source – generate getter setter
'java' 카테고리의 다른 글
[java] 람다식 기초 사용법 (0) | 2024.04.21 |
---|---|
[java/기본] package와 import (0) | 2024.04.20 |
[java/기본]7. 배열1. 정적 배열(array) (0) | 2024.04.16 |
[java/기본]6. 반복문(while, do..while, for) (0) | 2024.04.16 |
[java/기본]5. 조건문(if, switch) (0) | 2024.04.16 |