📌 캡슐화
: 객체 외부에서 객체의 데이터로 직접접근을 막음 ⛔️
객체지향프로그래밍, Java의 특징
객체데이터를 외부에서 읽고 변경 → 객체의 무결성이 깨짐
(ex. 자동차 속도는 음수 불가. but 외부에서 음수로 변경 → 객체 무결성이 깨짐)
① private
멤버변수 사용 → 외부에서 조회 및 변경 불가 ⛔️
② 메서드를 통한 데이터변경 허용
➡️ 이때의 메서드를 getter
, setter
라고 함
public class Sample {
// 멤버변수 private 선언
private String name;
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String name) {
this.name = name;
}
}
Getter ➡️ 필드 값을 읽음
Setter ➡️ 외부에서 값을 지정해 수정함
📌 get+필드네임()
: 일반 필드 type
📌 is+필드네임()
: 필드 type → boolean
필드네임 첫글자는 대문자 사용
멤버변수 → private
getter 메서드 → public
getter는 필드값을 읽어오는 것이므로 return 값이 있음
class FieldPrac {
private boolean check;
public boolean isCheck() {
return check;
}
}
public class Student {
private int age;
private boolean test;
public int getAge() {
return age;
}
public boolean isTest() {
return test;
}
}
📌 set+필드네임(필드자료형타입 필드이름)
필드네임 첫글자는 대문자 사용
멤버변수 → private
getter 메서드 → public
return 타입 → void
외부에서 값을 지정해 유효성검사를 통해 수정함 → 참조변수 this를 사용함
public class Bus {
private boolean stop;
// getter
public boolean isStop() {
return stop;
}
// setter
public void setStop(boolean stop) {
this.stop = stop;
}
}
public class Car {
// 멤버(인스턴스)변수
private int speed;
private boolean stop;
// 생성자
// getter
public int getSpeed() {
return speed;
}
// setter
public void setSpeed(int speed) {
if (speed < 0) {
this.speed = 0;
return;
} else {
this.speed = speed;
}
}
// getter
public boolean isStop() {
return stop;
}
// setter
public void setStop(boolean stop) {
this.stop = stop;
this.speed = 0;
}
}
유익한 글 잘 봤습니다, 감사합니다.