어려울 거 같아서 미뤄뒀던 프로그래밍 공부 이번에 숨 딱 참고 Java 다이브 💦
class User{
private String userName;
private int userAge;
public String getUserName(){
return userName;
}
public void setUserName( String userName ){
this.userName = userName;
}
public int getUserAge(){
return userAge;
}
public void setUserAge( int userAge ){
this.userAge = userAge;
}
}
- "get", "set" 접두사 뒤에 변수 이름을 첫 글자가 대문자의 형태로 명시
- getter는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시
- setter는 연결된 멤버변수의 데이터 타입을 파라미터 형으로 명시
public 변수로 그냥 선언해도되는데 굳이 getter, setter은 사용하는 이유는 뭘까요? 그 이유는 비즈니스 로직(업무 로직)과 프로그래밍 로직의 차이가 있을 수 있기 때문이에요. 예를 들어, public int age 라는 변수가 선언이 되었다고 생각해보면 사람의 나이는 -1살이 될 수 없지만 int 라는 데이터타입의 프로그래밍상 -1은 충분히 입력될 수 있어요. getter, setter을 사용하여 의도치 않은 버그가 발생하여 잘못된 데이터의 입력이나 데이터가 손상되는 것을 방지할 수 있어요. 또는 getter을 아예 입력하지 않음으로써 다른 사용자의 접근을 아예 막을 수도 있어요.
class HumanAge{
private int age;
public int getAge(){
return age;
}
public void setAge(){
if(age >= 0){
this.age = age;
}else{
this.age = 0;
}
}
}
지켜야할 관례
- 클래스는 생성자를 가지고 있어야한다.
- 클래스의 속성들은 get, set 메서드를 통해 접근할 수 있어야한다.
class User{ //자바빈즈에 기본 모습
private String userName;
public String getUserName(){
return userName;
}
public void setUserName( String userName ){
this.userName = userName;
}
}
(1) 화면에서 마우스 오른쪽 버튼을 눌러요. - [Source] - [Generate Constructor using Fields]
(2) 포함할 변수를 체크해줘요 - [Access modifier]에서 접근 한정자를 선택해줘요 - [Generate]
(3) 파라미터가 있는 생정자가 만들어졌음을 확인할 수 있어요.
(1) 화면에서 마우스 오른쪽 버튼을 눌러요. - [Source] - [Generate Getters and Setters]
(2) 포함할 변수를 체크해줘요 - [Access modifier]에서 접근 한정자를 선택해줘요 - [Generate]
(3) getter와 setter가 만들어졌음을 확인할 수 있어요.
다음 다이브에서 또 만나요 🌊
출처
https://media.giphy.com/media/l2Je1bFuOpkNpyqYM/giphy.gif
https://media.giphy.com/media/Jbb3KS22397YQ/giphy.gif