728x90
2023.01.11 - [JAVA/Java 기초] - 패키지.java
패키지.java
2023.01.11 - [JAVA/Java 기초] - 인스턴스 멤버, static, final ... 인스턴스 멤버, static, final ... 2023.01.10 - [JAVA/Java 기초] - 객체, 클래스 변수.java 객체, 클래스 변수.java 객체 객체(object)란 물리적으로 존재하
less-go.tistory.com
Getter 와 Setter
객체의 필드(데이터)를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성(결점이 없는 성질)이 깨 질수 있습니다.
ex) 자동차의 속력은 음수가 될수 없는데, 외부에서 음수로 변경하면 객체의 무결성이 깨집니다.
Car myCar = new Car();
myCar.speed = -100;
객체 지향 프로그래밍에서는 직접적인 외부에서의 필드 접근을 막고,
대신 메소드를 통해 필드에 접근하는 것을 선호합니다.
private double speed;
private : 같은 클래스 내부에서는 접근이 가능합니다.
setter를 통해서 같은 내부에 있는 private 필드에 접근해서 값을 변경합니다.
getter를 통해서 같은 내부에 있는 private 필드에 접근해서 값을 가져옵니다.
public void setSpeed(double speed){
if(speed<0){
this.speed = 0;
return;
}else{
this.speed = speed;
}
}
public double getSpeed(){
double km = speed * 1.6;
return km;
}
}
tip)
private 변수를 먼저 생성해두고, 우클릭 - > source -> generate getter and setter.. 선택후 실행하면
getter와 setter 메소드가 작성이 됩니다.
//private을 적용한 클래스 생성
public class Car {
private int speed;
private boolean stop;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
if(speed<0) {
this.speed = 0;
return;
}else {
this.speed = speed;
}
}
public boolean isStop() {
return stop;
}
public void setStop(boolean stop) {
this.stop = stop;
if(stop == true) {
this.speed = 0;
}
}
}
//실행메소드
public class CarExam {
public static void main(String[] args) {
Car myCar = new Car();
myCar.setSpeed(-50);
// myCar.speed(80)을 사용할수 없습니다.
// speed가 private로 보호받고있어 같은 클래스가 아니라면 사용이 불가합니다.
// 따라서 set으로 값을 입력해주고 get으로 출력해주어야 합니다.
System.out.println("현재 속도 : " + myCar.getSpeed());
myCar.setSpeed(60);
System.out.println("현재 속도 : " + myCar.getSpeed());
if(!myCar.isStop()) {
myCar.setStop(true);
}
System.out.println("현재 속도 : " + myCar.getSpeed());
}
}
728x90
'JAVA > Java 기초' 카테고리의 다른 글
| static 이란? (0) | 2023.01.11 |
|---|---|
| 싱글톤 패턴.java (0) | 2023.01.11 |
| 패키지.java (0) | 2023.01.11 |
| 인스턴스 멤버, static, final ... (0) | 2023.01.11 |
| 객체, 클래스 변수.java (0) | 2023.01.10 |