□ 데이터 은닉
○ 멤버변수(속성)는 주로 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();
}
}
'Java > Java_basic' 카테고리의 다른 글
Step16. 오버라이드(Override)와 Super 클래스 (2) | 2023.09.25 |
---|---|
Step15. 상속과 Private 접근자 (0) | 2023.09.25 |
Step13. 패키지와 Static (0) | 2023.09.24 |
Step12. 생성자와 전역/지역/매개변수, this (2) | 2023.09.24 |
Step11. 객체와 메모리 (0) | 2023.09.22 |