접근 제어 지시자
: 클래스, 변수, 메서드의 선언부에 사용되어 클래스 외부에서 사용할 수 있는지 여부를 지정하는 키워드이다.
- private : 같은 클래스 내부에서만 접근이 가능하다. (외부 클래스, 상속 관계의 클래스에서는 접근 불가)
- (default) : 같은 패키지 내부에서만 접근이 가능하다. (상속 관계라도 패키지가 다르면 접근이 불가)
- protected : 같은 패키지나 상속관계의 클래스에서 접근 가능하고 그 외 외부에서는 접근할 수 없다.
- public : 클래스의 외부 어디서나 접근할 수 있다.
제어자 | 같은 클래스 | 같은 패키지 | 자손클래스 (다른패키지도 가능) |
전체 |
public | O | O | O | O |
protected | O | O | O | |
(default) | O | O | ||
private | O |
캡슐화
: 정보 은닉을 위한 캡슐화
- 꼭 필요한 정보와 기능만 외부에 오픈
- 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공하여 일관된 기능을 구현하게 한다. (외부로부터 데이터를 보호하고 불필요하거나 내부적으로만 사용되는 부분을 감추기 위해서)
- 각각의 메서드나 멤버변수를 접근함으로써 발생하는 오류를 최소화한다.
- get() / set() 메서드
- private으로 선언된 멤버 변수에 대해 접근, 수정할 수 있는 메서드를 public으로 제공한다.
: get() 메서드만 제공되는 경우 read-only 필드
- 이클립스에서 자동으로 생성해주는 단축 기능이 존재한다.
: (shift + alt + S) --> Generate Getters and Setters
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public class Time { private int hour; private int minute; private int second; public int getHour() { return hour; } public void setHour(int hour) { if(hour < 0 || hour > 23) return; this.minute = minute; } public int getMinute() { return minute; } public void setMinute(int minute) { if(minute < 0 || minute > 59) return; this.minute = minute; } public int getSecond() { return second; } public void setSecond(int second) { if(second < 0 || second > 59) return; this.second = second; } | cs |
→ 접근 제어자를 private으로 하여 외부에서 직접 접근하지 못하도록 한다.
→ 'get멤버변수이름'은 멤버변수의 값을 읽는 메서드이고, 'set멤버변수이름'은 멤버변수의 값을 변경(설정)하는 메서드이다.
'프로그래밍 > Java' 카테고리의 다른 글
Java_static변수와 메서드 (0) | 2023.02.12 |
---|---|
Java_this 사용법 (0) | 2023.02.10 |
Java_참조자료형 변수 (0) | 2023.02.09 |
Java_생성자 (0) | 2023.02.07 |
Java_함수(function) (0) | 2023.02.06 |