getter와 setter
인스턴스 변수의 접근 제어자를 private로 변경했을때 변경과 읽어오는건 어떻게 하는가에 의해 사용한다.
getter
public <반환형> getXXX() {
return <private 인스턴스 변수명>;
}
기본형태는 위 코드와 같다.
class dog{
private String name; // 인스턴스 변수
private int age; // 인스턴스 변수
private String sex; // 인스턴스 변수
public void walk(){ }
public void eat() { }
public void bark(){ }
public dog(String name, int age, String sex){
this.name = name; // 인스턴스 변수 name에 지역 변수 name을 대입
this.age = age; // 인스턴스 변수 age에 지역 변수 age을 대입
this.sex = sex; // 인스턴스 변수 sex에 지역 변수 sex을 대입
}
}
public class test{
public static void main(String[] args) {
dog cheeze = new dog("cheeze", 2, "male");
}
}
이때 private로 접근을 막은 것, 보여주고 싶은 정보가 있다면 getter라는 public 함수로 만든다.
class dog{
private String name; // 인스턴스 변수
private int age; // 인스턴스 변수
private String sex; // 인스턴스 변수
public void walk(){ }
public void eat() { }
public void bark(){ }
public String getName() {
return this.name;
}
public dog(String name, int age, String sex){
this.name = name; // 인스턴스 변수 name에 지역 변수 name을 대입
this.age = age; // 인스턴스 변수 age에 지역 변수 age을 대입
this.sex = sex; // 인스턴스 변수 sex에 지역 변수 sex을 대입
}
}
getName()이라는 함수로 인해 private인 name변수의 값을 가져올 수 있다.
public class test{
public static void main(String[] args) {
dog cheeze = new dog("cheeze", 2, "male");
System.out.println("dog name : "+ cheeze.getName());
}
}
setter
public void setXXX(<private 인스턴스 변수의 자료형> <인자명>) {
<private 인스턴스 변수명> = <인자명>;
}
기본적인 형태는 위 코드와 같다.
그리고 private로 접근을 막은 것, 외부에서 변경 하는것을 허용하게 할때면 setter라는 public 함수를 만든다.
class dog{
private String name; // 인스턴스 변수
private int age; // 인스턴스 변수
private String sex; // 인스턴스 변수
public void walk(){ }
public void eat() { }
public void bark(){ }
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public dog(String name, int age, String sex){
this.name = name; // 인스턴스 변수 name에 지역 변수 name을 대입
this.age = age; // 인스턴스 변수 age에 지역 변수 age을 대입
this.sex = sex; // 인스턴스 변수 sex에 지역 변수 sex을 대입
}
}
setName()이라는 메서드로 인해 생성된 객체의 변수를 변경할 수 있다.
public class test{
public static void main(String[] args) {
dog newdog = new dog(" ",0,"female");
newdog.setName("dana");
System.out.println("dog name : "+ newdog.getName());
}
}
※ 인스턴스 변수는 대부분 경우 private로 지정한다. 정보를 숨기기 위해
※ getter 추가는 자유롭게 하되( 사용자가 알필요 없는 정보는 보여주지 않는게 정석),
setter는 고민 후 추가하자 ( 개체가 스스로 상태를 바꾸게 해야 한다.)
클래스를 만들기와 private 인스턴스 변수가 캡슐화이다
사용자는 클래스 속을 알 필요가 없다.
외부로 부터 내부 데이터의 접근을 최대한 막고 보호하기 때문이다.
'JAVA 공부 > 객체지향 공부' 카테고리의 다른 글
5. 상속 (2) (0) | 2023.03.18 |
---|---|
4. 상속 (1) (0) | 2023.03.18 |
3. 생성자 (0) | 2023.03.13 |
2. 변수, 메서드 (0) | 2023.03.13 |
1. 클래스, 객체 (0) | 2023.03.12 |