본문 바로가기
언어/JAVA

Setters, Getters

by hazel_ 2021. 5. 26.

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

 

간단! 

만약에 이 기능이 없다면 이클립스의 버전이 나와 다른 경우이다..

나의 버전은 다른 게시물에 적어놨으니 확인해주길 바란다!

2021.05.26 - [언어/JAVA] - JAVA

 

 

아무튼 이렇게 다 하고 나면 간단하게 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

댓글