접근제어자와 캡슐화, 그리고 getter, setter메서드
- Computer / Java
- 2018. 8. 14.
학원수업을 듣다보면 하루에도 수십번 난관에 봉착하며 혼자 되내인다. 처음엔 고뇌에 빠져 멘탈이 살짝 흐릿해지다가, 컴퓨터 공부한지 이제 2개월인데 잘하는게 이상하지. 차분히 내가 해야할 공부를 해야지 한다....
정신이...ㅋㅋ
암튼 오늘 collection부분을 수업하기전에 선생님께서 인터페이스와 관련되 문제를 몇개 내주셔서 풀고있던 중 여지껏 너무 헤깔렸던 개념에 대해 먼가 길을 찾고자 자바의 정석을 펼쳤다.
1. 접근제어자(access modifier)
접근제어자 |
같은 클래스 |
같은 패키지 |
자손클래스 |
전체 |
public |
O |
O |
O |
O |
protected |
O |
O |
O |
|
(default) |
O |
O |
|
|
private |
O |
|
|
|
제어자는 제어자가 붙은 자신에게 타인(객체)이 접근하는데 있어서 각각 다른 제한조건을 둔다.
public은 전체가 접근해서 사용하거나 참조할 수 있고, 그 반대로 private의 경우에는 같은 클래스 내에서만 이용하거나 참조할 수 있다.
접근 범위 : public > protected > (default) > private
2. 캡슐화
3. getter와 setter메서드
get으로 시작하는 메서드는 단순히 멤버변수의 값을 반환한다.
그리고 set으로 시작하는 메서드는 매개변수에 지정된 값을 검사하여 조건에 맞는 값일 때만 멤버변수의 값을 변경한다.
보통 멤버변수의 값을 읽는 메서드의 이름을 'get멤버변수이름'( ex) getTime, getHour, getId, getAddress...) 이라 하고,
멤버변수의 값을 변경하는 메서드의 이름을 'set멤버변수이름' ( ex) get과 같은 방식으로 생각!)으로 한다.
package javajeungseok; public class Time { private int hour; 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 + "입니다."; } }
package javajeungseok; public class TimeTest { public static void main(String[] args) { Time t = new Time(12, 35, 30); System.out.println(t); t.setHour(t.getHour()+1); System.out.println(t); } }
<자바의정석 p350에 있는 예제.>
- Time클래스의 모든 멤버변수가 private이기 때문에 get과 set으로 멤버변수에 접근한다. 이들을 다루기위해서 public메서드를 선언했고, 그 메서드를 통해서만 변수에 접근이 가능하다.
'Computer > Java' 카테고리의 다른 글
wrapper class (0) | 2018.09.01 |
---|---|
Object class 중, clone(), equals(), hashCode(), toString() 메서드 (0) | 2018.09.01 |
java 환경변수 설정하기 (0) | 2018.08.11 |
인터페이스를 상속받은 클래스를 이용하여 홀수와 소수의 합을 구하기 (0) | 2018.08.08 |
반복문을 이용해 1,2,3,4,5,6,7,8,9와 같이 출력하기 (0) | 2018.08.03 |