09009
[Java] 접근 제어자 본문
접근 제어자
• 멤버변수 또는 클래스에 사용되어 해당하는 멤버변수 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할 수행
제어자 | 같은 클래스 | 같은 패키지 | 자손 클래스 | 전체 |
public | O | O | O | O |
protected | O | O | O | |
(default) | O | O | ||
private | O |
• public : 접근 제한 x
• protected : 같은 패키지 내에서, 그리고 상속 관계에 있는 다른 패키지의 자손 클래스에서 접근 가능
• default : 같은 패키지 내에서만 접근 가능
• private : 같은 클래스 내에서만 접근 가능
예제 소스코드
class Time {
private int hour; // private int hour, minute, second; 로 짧게 선언 가능
private int minute;
private int second;
Time(int hour, int minute, int second) {
setHour(hour); setMinute(minute); setSecond(second);
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
if (hour < 0 || hour > 23)
return;
this.hour = hour;
}
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;
}
@Override
public String toString() { // 출력할 형식을 지정
return hour + ":" + minute + ":" + second;
}
}
public class TimeEx {
public static void main(String[] args) {
Time t = new Time(9, 51, 13);
System.out.println("변경 전:" + t);
// t.hour = 11; 변수 hour의 접근 제어자는 private이므로 접근 불가능
t.setHour(t.getHour() + 2); // 현재 시간보다 2시간 후로 변경
System.out.println("변경 후:" + t);
}
}
변경 전:9:51:13
변경 후:11:51:13
get으로 시작하는 메서드 : 멤버변수의 값 반환
set으로 시작하는 메서드: 매개변수에 지정된 값을 검사 후, 조건에 맞는 값일 경우에만 멤버변수의 값을 변경
Time 클래스의 모든 멤버변수(hour, minute, second)의 접근 제어자를 private으로 설정하고, 이 멤버변수들을 다루기 위한 public 메서드를 따로 추가하였다.
그러므로, "t.hour = 11;"과 같은 멤버변수로의 직접적인 접근은 허가되지 않는다. 메서드를 통한 접근만 허용된다.
'Back-End > JAVA' 카테고리의 다른 글
[Java] JDBC (2) (eclipse와 Oracle, MySQL) (0) | 2023.03.24 |
---|---|
[Java] JDBC (1) (eclipse와 Oracle, MySQL) (0) | 2023.03.23 |
[Java] 클래스변수, 인스턴스변수, 초기화 블럭 (0) | 2023.03.18 |
[Java] (중요) 참조형 반환타입의 메서드 (0) | 2023.03.18 |
[Java] 쓰레드 (0) | 2023.03.13 |
Comments