접근 제어 지시자 (access modifier)
- 클래스, 멤버 변수, 메서드 등 자료형 앞에 제시되어 외부에서의 접근을 제한하여 정보를 보호할 수 있는 키워드이다.
- 접근 제어 지시자를 이용하여 정보를 보호할 수 있다.
- public : 외부 어디에서나 사용 가능
- private : 같은 클래스 내부에서만 사용 가능 ( 외부 클래스 또는 상속 관계에서도 접근 X)
- protected : 같은 패키지나 상속 관계의 클래스에서 접근 가능, 그 외 외부 클래스 X
- default : 같은 패키지 내에서만 접근 가능, 상속 관계라도 패키지가 다르면 X
Getter & Setter
- private으로 멤버 변수를 선언했더라도 public 메서드를 이용해 값을 가져오거나 변경하는 것이 가능하다.
- get() 메서드만 사용할 수 있으면 read-only
- 이클립스에서 <우클릭 → Source → Generate Getters and Setters> 해주면 멤버 변수 별로 getter와 setter를 자동으로 만드는 것이 가능하다. (완전 편리)
- 이름은 달라도 되지만 통상적으로 쓰이는 것은 get & set
예제 코드
날짜를 입력받아 유효한 날짜인지 확인하여 출력해주는 프로그램
CheckDate.java
- month의 setter에서 달이 유효한지 확인하여 isValid 값을 수정한다.
- isValid 변수는 클래스 내부에서 날짜가 유효한지 체크할 때만 사용하므로 다른 클래스에서 값을 변경할 필요가 없으므로 read-only 필드이다.
- boolean 값은 default로 false값을 갖는다.
package ch10_prac;
public class CheckDate {
private int year;
private int month;
private int day;
private boolean isValid; // 유효한 날짜인지 체크하는 flag.
public void setYear(int year) {
this.year = year;
}
public int getYear() {
return year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
if (month >= 1 && month <= 12) {
isValid = true;
this.month = month;
}
else {
isValid = false;
}
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
public void showDate() {
if (isValid) {
System.out.println(year + "년 " + month + "월 " + day + "일 입니다.");
}
else {
System.out.println("유효하지 않은 날짜입니다");
}
}
}
CheckDateTest.java
- CheckDate 클래스의 멤버 변수가 private으로 설정되어 마지막 문장은 수행되지 않는다. (오류 메세지 : not visible)
package ch10_prac;
public class CheckDateTest {
public static void main(String[] args) {
CheckDate date = new CheckDate();
date.setDay(25);
date.setMonth(1);
date.setYear(2022);
date.showDate();
// date.day = 30;
}
}
수행 결과
1) 유효한 달 (1~12) 값을 입력했을 경우
2022년 1월 25일 입니다.
2) 유효하지 않은 달 값을 입력했을 경우
유효하지 않은 날짜입니다
'Java & Kotlin' 카테고리의 다른 글
[Java 객체지향] 캡슐화 (0) | 2022.01.25 |
---|---|
[Java 객체지향] 참조 자료형 변수 (0) | 2022.01.25 |
[Java 객체지향] 생성자 (0) | 2022.01.25 |