WEB/Spring

[Spring]Getter 그리고 Setter 생성하고 사용하기

MoonSta 2023. 5. 16. 10:13

 오늘은 멤버변수의 값을 조회하고 값을 할당하기 위한 Spring의 Getter, Setter에 대해 알아보도록 하자. 하지만 알아보기에 앞서 왜 Getter, Setter로 접근을 해야 하는지에 대해 알아야 한다.

 

 

📌자바의 접근 제어자

private : 같은 클래스 내에서만 접근 

default : 같은 패키지 내에서만 접근 

protected : 같은 패키지내 또는 자손 클래스일 경우 접근

public : 제한 없음

 

Java에서는 위의 4가지 방법으로 접근 제어자를 지정할 수 있다. 접근 제어자는 객체 지향 언어인 Java에서 데이터를 외부로부터 은닉하기 위해 사용한다. 따라서 클래스 내의 멤버 변수는 private으로 선언되고, 이러한 멤버변수에 접근하기 위해 Getter, Setter를 사용하여 각 변수를 조회하고 값을 할당한다. 

 

 

📌Getter

  • 멤버 변수의 값을 조회
  • ex) getName()와 같이 get뒤에 멤버변수의 이름을 붙여서 사용

사실 이렇게만 들으면 이해하기 어렵다. 실제 멤버 변수를 만들고 조회해 보자. 

 

📌Setter

  • 멤버 변수의 값을 할당
  • ex) setName()와 같이 set뒤에 멤버변수의 이름을 붙여서 사용

사실 이렇게만 들으면 이해하기 어렵다. 실제 멤버 변수를 만들고 조회해 보자. 

 

 

📌멤버변수 선언(접근 제어자 : private)

Public class Person {
	
    private String name;
    private int age;
    private String gender;
}

이와 같이 접근 제어자를 private으로 지정하면 클래스 외부에서 멤버변수에 접근할 수 없다. 따라서 아래 코드에선 Person 클래스의 멤버 변수의 접근이 불가하다. 

 

 

Public class Test {
  public Person getPerson() {
    //멤버 변수의 접근 불가 -> 클래스 외부
    Person person = new Person();
    person.name;
    person.age;
    person.gender;
    
    person.name = "moonstar";
    person.age = 20
    person.gender = "male";
    
    return person;
  }
}

이와 같이 클래스 내에 있는 멤버 변수에 대한 무분별한 접근을 막기 위해 접근 제어자를 private으로 지정을 한다. 하지만 접근이 필요한 경우에는 어떻게 해야 할까? 이러한 접근 방식의 일환으로 Getter와 Setter가 등장하였다. 

 

 

 

📌Getter, Setter 선언

Public class Person {
	
    private String name;
    private int age;
    private String gender;
    
    public String getName() {
      return this.name;
    }
    
    public String getAge() {
      return this.age;
    }
    
    public String getGender() {
      return this.gender;
    }
    
    public void setName(String name) {
      this.name = name;
    }
    
    public void setAge(int age) {
      this.age = age;
    }
    
    public void setGender(String gender) {
      this.gender = gender;
    }
}

이처럼 멤버 변수의 클래스 내에 외부에서 접근이 가능한 public으로 Getter, Setter 메서드를 선언해 준다. 이제 선언을 완료하였으니 외부에서 접근해 보도록 하자.

 

 

📌Getter, Setter 접근 

Public class Test {
  public Person getPerson() {
    //setter -> 값 할당
    Person person = new Person();
    person.setName("moonstar");
    person.setAge(20);
    person.setGender("male");
    
    //getter -> 값 조회
    String name = person.getName();
    int age = person.getAge();
    
    System.out.println(name);
    System.out.println(age);
  }
}

//moonstar
//20