자바기반의 웹&앱 응용 SW개발자 양성과정 13일차 -26
1. getter 와 setter
1)사용하는 이유.
getter와 setter를 사용하는 이유는 간단하게 말하자면 다른 클래스에서 해당 클래스의 멤버변수에 함부로 접근하지 못하게 하기 위해서입니다.
객체지향적으로 볼때 캡슐화와 은닉은 굉장히 중요한 부분을 차지하고 있는데,
캡슐화는 클래스의 외부에서 내부의 정보를 직접 접근,조작할 수 없고, 외부에서 접근이 가능하도록 설정된 메소드를 통해서 객체의 정보에 접근할 수 있다는 것입니다.
그렇기에 우리는 코드를 작성할 때 클래스의 멤버변수에 private이라는 접근제어자를 사용해서 외부에서 객체 내부의 멤버 변수의 값을 함부로 사용하지 못하게 합니다. 외부로의 확장에 막혀있는 객체의 값을 사용하기위해 getter와 setter의 메소드가 준비되어있습니다.
은닉성의 입장에서 본다면 getter와 setter는 단지 멤버변수를 그대로 가져오거나 셋팅을 하는 것이아니라 getter와 setter를 사용하는 곳에서 멤버변수의 값을 그대로 가져올 수 없도록 뭔가 로직을 건드려야 의미가 있습니다.
은닉은 해당 객체의 정보를 숨기고 그안의 연산(메소드)을 통해서만 접근을 허용하기때문에 소프트웨어를 확장하거나 수정, 유지보수시 오류를 최소화 하도록 할 수 있습니다.
1)사용하는 방법
간단한 예제를 통해 사용하는방법을 설명해보겠다.

Exam클래스의 멤버변수로 private int kor를 선언해준뒤
Student의 main함수에서 exam객체를 생성해준다.
Exam클래스에 ALI+SHIFT+S 키를 사용해서 GETTER와 SETTER를 자동 생성해준다
getter는 반드시 매개변수가 없어야하고 리턴값이 존재해야한다.
setter는 반드시 매개변수가 있어야하며 반환값이 없어야한다.
Student의 main함수에서 setKor(kor)를통해 값을 입력해준뒤
getKor()를 이용해 값을 불러온다.
결국 멤버변수의 값을 직접적으로 호출하지않고 캡슐화를 위해 접근가능한 메소드를 사용해 값을 변경 및 출력해준다