언어/Java

Getter와 Setter

O_oz 2023. 8. 23. 20:18
반응형

객체 지향 프로그래밍에서 객체의 데이터를 외부에서 마음대로 읽고 변경하는 것을 방지하기 위해 메소드를 통하여 데이터를 변경하는 방법을 사용함

데이터는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 함

클래스 선언 시 필드를 private로 선언해서 외부로부터 보호하고, 필드에 대한 Setter와 Getter 메소드를 작성해 필드값을 안전하게 변경/사용 함

 

Setter : 메소드가 매개값을 검증해서 유효한 값만 데이터로 저장하게 함

 

Getter : 외부에서 객체의 데이터를 읽을 때, 객체의 필드값이 객체 외부에서 사용하기 부적잘한 경우 메소드를 사용하여 필드값을 가공한 후 외부로 전달함

    - 필드 타입이 boolean일 경우 Getter는 is로 시작

 

외부에서 필드값을 읽을 수만 있고 변경하지 못하도록 하려면 Getter 메소드만 선언하든지, Setter 메소드를 private 접근 제한을 갖도록 선언

 

public class Car {
    // 필드
    private int speed;
    private boolean stop;
    
    // 생성자 : speed = 0, stop = false
    
    // 메소드
    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;
        this.speed = 0;
    }
}
public class Example {
    public static void main(String[] args) {
        Car myCar = new Car();
        
        // 잘못된 속도 변경
        myCar.setSpeed(-50);
        
        System.out.println("현재 속도 : " + myCar.getSpeed());	// 현재 속도 : 0
        
        // 올바른 속도 변경
        myCar.setSpeed(60);
        
        // 멈춤
        if (!myCar.isStop()) {
            myCar.setStop(true);
        }
        
        System.out.println("현재 속도 : " + myCar.getSpeed());	// 현재 속도 : 0
    }
}
반응형

'언어 > Java' 카테고리의 다른 글

상속  (0) 2023.08.24
어노테이션  (0) 2023.08.24
접근 제한자  (0) 2023.08.23
클래스  (2) 2023.08.23
참조 타입  (0) 2023.08.21