JAVA/Java 기초

Getter & Setter .java

john_ 2023. 1. 11. 12:49
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