본문 바로가기
Java/Java_basic

Step14. 데이터은닉과 Getter/Setter

by Mr.DonyStark 2023. 9. 24.

□ 데이터 은닉

 ○ 멤버변수(속성)는 주로 private으로 설정하여, 외부로부터 데이터가 변질되는 것을 막을 수 있음
 ○ 매개변수로 받는 데이터를 변질 되지 않도록 public이 아닌 private으로 클래스 변수 지정
 ○ 데이터(속성)변질이 우려되는 시나리오
   - 급여 프로그램에서 급여 담당자가 실수로 급여액을 잘못 입력할 경우
   - 변경될 수 없는 사번이 변경되는 경우

□ Setter, Getter 

 ○ 클래스에서 지정한 속성을 은닉처리 즉, Private으로 지정하면 기존 객체에서 받은 최초의 값을 업데이트 할 수 없음
 ○ 이를 위해 Getter와 Setter를 지정하여 데이터은닉처리된 속성에 대한 받은 값이 지속해서 업데이트 될 수 있도록 할 수 있음

예제1) 클래스 파일 + Private으로 클래스 속성 데이터은닉처리 + Getter/Setter 지정

package pjt_test;

public class Setter_Getter_Class {
	
	//속성지정
	//private으로 속성을 지정하였기때문에 객체에서 최초 받은 데이터를 수정할 수 없음
	private String name;
	private int score;
	
	
	//생성자 지정
	public Setter_Getter_Class(String n , int s) {
		this.name = n;
		this.score = s;
	}
	
	//메서드 생성
	public void getInfo() {
		System.out.println("-getingo()-");
		System.out.println("name : " +name);
		System.out.println("score :" +score);
	}

	//private으로 지정한 속성에 대한 데이터 값을 수정 또는 업데이트 가능하도록 Getter Setter 지정
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getScore() {
		return score;
	}
	
	//조건을 주어 받은 값의 반영여부 설정
	public void setScore(int score) {
		if(score > 50) this.score = score;
	}
	
}

예제1-1) 객체 파일 + 생성된 클래스의 속성 및 메서드 활용 + Getter/Setter활용하여 매개변수를 받아 데이터 업데이트

package pjt_test;

public class Setter_Getter_Class_Main {
	public static void main(String[] args) {
		
		//객체생성
		Setter_Getter_Class Student_1 = new Setter_Getter_Class("홍길동", 100);
		Setter_Getter_Class Student_2 = new Setter_Getter_Class("이순신", 90);
		Setter_Getter_Class Student_3 = new Setter_Getter_Class("안중근", 80);
		
		System.out.println("1차");
		//클래스에서 지정한 메서드 활용
		Student_1.getInfo();
		Student_2.getInfo();
		Student_3.getInfo();
		
		System.out.println("2차");		
		//Setter를 활용하여 점수 업데이트
		//Setter를 사용하지 않으면 클래스 속성이 Private이므로 값이 업데이트되지 않음
		Student_1.setScore(65);
		Student_1.getInfo();

		//Setter를 활용하여 점수 업데이트
		//Setter를 사용하지 않으면 클래스 속성이 Private이므로 값이 업데이트되지 않음
		Student_2.setName("손흥민");
		Student_2.getInfo();
	}
}