Information Hiding을 이용한 getter/setter출력 예시
//Person클래스 생성
public class Person{
private String name;
private int age;
public void setName(String name){this.name=name;}
public void setAge(int age){this.age=age;}
public void String getName(){return name;}
public void int getAge(){return age;}
}
//Person클래스 호출
public class personTest{
pyblic static void main(String[] args){
Person p=new Person();
//private접근 제한자 때문에 필드_멤버 변수에 접근을 할 수 없다.
//접근을 할 수 없으니 setter를 사용하여 값을 입력 및 저장한다.
p.setName("뚱이아저씨");
p.setAge(6);
//setter를 사용하여 값을 저장했기 때문에 getter를 사용하여 값을 출력한다.
System.out.printf("%s, %d", p.getName(), p.setAge());
}
}
getter/setter는 private(정보은닉)으로 선언된 필드의 값을 수정또는
호출하고자 할때 필요하다.
private은 거의 모든 접근을 막는 접근 제한다 이기 때문에 필드를 직접 입력할 수 없어
private의 값을 수정 호출하고자 할때 getter/setter가 사용된다.
연습문제
문제 :
- Man클래스(도메인)생성
- 접근 제한자 get/set를 이용하여 정보은닉 반영
- 객체의 이름, 나이를 입력받은 후
- 객체의 이름, 나이,등록일(현재)를 출력
//도메인 생성
public class Man{
private String name;
private int age;
//현재날짜를 출력하는 필드
private LocalDate regDate;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public LocalDate getRegDate(){
return regDate;
}
public void setRegDate(LocalDate regDate){
this.regDate=regDate;
}
}
public class ManTest{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String name="";
int age=0;
LocalDate regDate=null;
System.out.print("이름 : ");
name=sc.nextLine();
System.out.print("나이 : ");
age=sc.nextInt();
//LocalDate는 현재 날짜를 출력하는 값이므로 입력을 받지 않는다.
regDate=LocalDate.now();
Man m=new Man();
m.setName(name);
m.setAge(age);
//LocalDate의 초기화된 값을 Man의 setter에 넣어준다.
m.setRegDate(regDate);
System.out.println("다음 사람을 입력하셨습니다.");
System.out.println("이름 : "+m.getName()+"\n"+"나이 : "+m.getAge()+"\n"+"등록일 : "+m.getRegDate());
}
}