Setters, Getters를 쓰는 이유!
일반적으로 OOP 프로그래밍에서는 class 내부에서 쓰이는 변수를 외부에서 직접 접근하지 못하게 한다.
그 이유는 외부에서 객체의 데이터를 변경할 경우 객체의 무결성이 깨질 수 있기 때문!
예를들어, 외부에서 사원의 나이를 저장하는 변수에 음수를 넣는다면, 나이는 음수가 될 수 없기 때문에 객체의 무결성이 깨지게된다.
그럴때 쓰이는 것이 Setters와 Getters!
Setters는 영어 뜻 그대로 값을 지정하는데 쓰이는 메소드
Getters는 클래스 외부에서 클래스 내부의 변수 값을 갖고오고 싶을 때 쓰이는 메소드!
무결성이 깨지는 것을 막기 위해 보통 Setters에 무결성 검사를 넣는다.
public void setAge(int age) {
if (age>-1) {
this.age = age;
}
}
Setters, Getters 쓰는 방법
가장 직관적인 방법은 모든 멤버 변수에 대하여 일일히 다 적는 것이다.
하지만 멤버변수가 100개가 되면,,, 한개당 set, get 다 적으면 200갠데,, 언제 다 적는가 ㅠ
이럴 때 사용하라고 있는 기능이 있다!
경로 : Source -> Generate Getters and Setters -> 만들고자 원하는 변수 체크 -> Generate
간단!
만약에 이 기능이 없다면 이클립스의 버전이 나와 다른 경우이다..
나의 버전은 다른 게시물에 적어놨으니 확인해주길 바란다!
아무튼 이렇게 다 하고 나면 간단하게 Getters와 Setters를 쓸 수 있게 된다!
아래 코드는 전 게시물에서 예시로 사용했던 코드와 이어진다.
2021.05.26 - [언어/JAVA] - Class
class Person{
String name;
int age;
char bloodType;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age>-1) {
this.age = age;
}
}
public char getBloodType() {
return bloodType;
}
public void setBloodType(char bloodType) {
this.bloodType = bloodType;
}
public void print() {
System.out.printf("이름 : %s 나이 : %d 혈액형 : %c\n", name, age, bloodType);
}
}
물론! 무결성 검사 코드는 따로 작성해야한다.
Getters와 Setters 사용해보기
public class Test01 {
public static void main(String[] args) {
Person chris = new Person("chris", 20, 'B');
Person mike = new Person("mike", 27, 'A');
Person alice = new Person("alice", 22, 'O');
System.out.println("---- 변경 전 info ----");
chris.print();
mike.print();
alice.print();
System.out.println("---- 변경 후 info ----");
chris.setBloodType('O');
mike.setBloodType('O');
alice.setBloodType('O');
System.out.println(chris.getBloodType());
System.out.println(mike.getBloodType());
System.out.println(alice.getBloodType());
System.out.println();
chris.print();
mike.print();
alice.print();
}
}
움.. 다 확인하려고 적은거라 지저분해 보이긴 하지만,, 그래도 결과를 보면!
성공적으로 혈액형이 변한 것을 볼 수 있다.
다른 변수들의 값도 같은 방법으로 변경시킬 수 있다.
'언어 > JAVA' 카테고리의 다른 글
JAVA 입력 (0) | 2021.07.20 |
---|---|
Constructor 생성자 (0) | 2021.05.29 |
Method Overloading (0) | 2021.05.29 |
Class (0) | 2021.05.26 |
JAVA (0) | 2021.05.26 |
댓글