class 선언과 set, get 개념
필자는 비전공자로 2024/6 부터 programming 공부를 시작하였다. 국비교육으로 배우는 중인데 개발자는 Github와 기술 blog가 필수란 걸 뒤늦게 알게 되어 이제부터라도 작성을 시작한다.
현재 공부 중인 교재 저자의 집필 후기를 보니 기술 블로그를 보고 출판사에서 먼저 연락이 왔다고 한다. 공부한 내용을 사전처럼 정리하여 쉽게 찾아볼 수 있는 것만으로도 도움이 되는데, 글을 잘 쓰면 부수입도 올릴 수 있다니 열심히 작성해 보도록 하겠다.
아래 예제는 Student class를 선언하고 사용해 보는 code이다. class는 여러 method(함수)를 넣을 수 있는 상자 같은 것이다. 쉽게 말해 공구함(class)에 용도가 다른 여러 공구(method)를 담아놓는 거라 보면 된다. Java 자체에 이미 유용한 class들이 많이 내장되어 있지만 개발자가 구현하고 싶은 모든 게 있는 건 아니므로 class를 직접 선언하여 사용해야 할 때도 있다. set과 get 개념을 학습하기 위해 예제에서는 set과 get method 기능이 있는 class를 선언해 보고 사용해 봤다.
set과 get은 private으로 선언되어 직접 접근할 수 없는 변수의 값을 조작하기 위해 사용한다.
set은 값을 입력하는 method이므로 매개변수에 입력할 값의 형식을 'String name'과 같은 형식으로 지정해줘야 한다. 'this.name = name'은 그 입력한 name을 같은 class안에 있는 name 변수(위에서 private String name으로 선언한 것)에 저장하는 것이다. 똑같은 name 같지만 하나는 변수이고 하나는 매개변수인 것을 이해하는 게 중요하다.
get은 값을 가져오는 method이므로 값 입력에 사용되는 매개변수는 필요 없고 name을 return하도록 지정하면 된다.
public class Student{ //선언자로 사용하기 위해 Student class를 정의
private String name;
public String setName(String name){ // set method는 보통 return할게 없으므로 void를 쓰지만, 원하면 return type 지정 후 return 예약어를 이용해 값을 반환할수도 있다.(함수는 하나의 기능을 하는게 버그날 확률이 적어서 보통 안 쓰는것)
this.name = name;
return "값이 변경되었다";
}
public String getName() { //getName method는 매개변수가 필요없으므로 비워둔다. 만약 set과 마찬가지로 적을시 사용되지도 않는 매개변수에 값을 지정해야하므로 더미 데이터가 생기게 된다.
return name;
}
}
public static void main(String[] args){ //top level class는 생략하였다
Student std1 = new Student(); //위에서 만든 Student class로 인스턴스를 생성
std1.setName("자바"); //생성한 인스턴스의 setName method를 불러와 "자바"를 입력
System.out.println(std1.getName()); //마찬가지로 생성한 인스턴스의 getName method를 불러와 사용하면 위에서 입력한 "자바"가 출력된다.
}