프로그래밍 언어/JAVA

[JAVA] Getter와 Setter

김곰댕 2021. 7. 1. 16:38
728x90
클래스를 선언할 때 필드는 일반적으로 private 접근 제한을 한다.

읽기 전용 필드가 있을 수 있다. (Getter의 필요성)

외부에서 엉뚱한 값으로 변경할 수 없도록 한다. (Setter의 필요성)

 

Getter

private 필드의 값을 리턴하는 역할을 한다.

필요할 경우 필드의 값을 가공해서 리턴한다.

getFieldName() 또는 isFieldName() 메소드를 말한다.

필드 타입이 boolean 일 경우 isFieldName()이다.

double getSpeed()
{
       double km = speed*1.6;
       return km;
}

 

Setter

외부에서 주어진 값을 필드값으로 수정한다.

필요할 경우 외부의 값을 유효성 검사한다.

setFieldName(타입 변수) 메소드를 말한다.

매개 변수 타입은 필드의 타입과 동일하다.

void setSpeed(double speed)
{
       if(speed < 0)
       {
              this.speed = 0;
              return;
       }
       else
       {
              this.speed = speed;
       }
}

 

예제)

package sec14.exam01_getter_setter;

public class Car 
{
	//만약 Car클래스를 읽기 전용으로 만들고 싶으면 private로 만들고 setter를 만들지 않으면됨
	private int speed;
	private boolean stop;
	
	public int getSpeed() //getter
	{
		return speed;
	}
	
	public boolean isStop() //getter
	{
		return stop;
	}
	
	public void setSpeed(int speed)
	{
		if(speed<0) //setter를 사용해서 외부에서 음수인 값을 넣게되면 0으로 만들어줌
		{
			this.speed = 0;
		}
		else
		{
			this.speed = speed;

		}
	}
	
	public void setStop(boolean stop)
	{
		this.stop = stop;
	}
}
package sec14.exam01_getter_setter;

public class CarExample 
{
	public static void main(String[] args)
	{
		Car myCar = new Car();
		System.out.println(myCar.getSpeed());
		System.out.println(myCar.isStop());
		
		myCar.setSpeed(100);
		System.out.println(myCar.getSpeed());

		myCar.setSpeed(-80);
		myCar.setStop(true);
		System.out.println(myCar.getSpeed());
		System.out.println(myCar.isStop());
	}

}

출력 결과

728x90