티스토리 뷰

JAVA

Getter와 Setter

Y.일월 2019. 9. 17. 10:27

Getter와 Setter


객체 지향 프로그래밍에서는 객체의 무결성을 보장한다.

즉, 객체의 데이터를 외부에서 직접적으로 접근하여 마음대로 읽고 변경할 수 없다는 것이다.

외부에서 데이터에 접근하려면 메소드를 통해야만 한다.

이러한 역할을 하는 메소드가 Setter이다.

Setter 메소드의 이름은 'set + 필드이름'으로 쓰는 것이 관례이다.


Setter는 매개값을 검증해서 유효한 값만을 데이터로 저장하는 역할을 한다.

예를 들어, 사람의 키를 데이터로 저장하는 객체가 있다고 가정하자.

그러나, 사용자가 데이터에 실수로 음수값을 입력했다.

그렇다면 객체의 무결성은 깨지게 된다.


그러므로, 우리는 Setter를 다음과 같이 코딩할 수 있다.


public void setHeight(double height){


if(height < 0 ){

this.height = 0;

System.out.println("입력값이 잘못됐습니다!");

}

else {

this.height = height;

}

}



외부에서 객체의 데이터를 읽을 때도 메소드를 사용하는 것이 좋은데, 이러한 역할을 하는 것이 Getter이다.

Getter 메소드의 이름은 'get + 필드이름 ' 으로 쓰는 것이 관례이다.


Getter는 또한 다음과 같이 코딩할 수 있다.


public void getHeight ( ) {    

return height;

}


Getter로 내보내는 데이터의 boolean일 경우, Getter의 이름은 'get + 필드이름' 이 아닌, 'is + 필드이름' 으로 쓰는것이 관례이다.



Getter와 Setter는 필드 선언 후, [Source -> Generate Getters and Setters]를 선택하면 자동 생성 된다. (eclipse 한정)





다음은 Getter와 Setter의 예시 코드이다.


Person.java

public class Person {

private double height;

private boolean male;


public double getHeight() {

return height;

}


public void setHeight(double height) {

if (height < 0) {

this.height = 0;

System.out.println("입력값이 잘못됐습니다!");

}


else {

this.height = height;

}

}


public boolean isMale() {

return male;

}


public void setMale(boolean male) {

this.male = male;

}

}



PersonEx.java


public class PersonEx {


public static void main(String[] args) {

// TODO Auto-generated method stub

Person pe = new Person();

pe.setHeight(160);

pe.setMale(false);

System.out.println("height: "+pe.getHeight());

System.out.println("male? " + pe.isMale());

}

}



'JAVA' 카테고리의 다른 글

final 클래스와 메소드  (0) 2019.09.17
상속(Inheritance)  (0) 2019.09.17
final 그리고, 상수(Static final)  (0) 2019.09.16
접근제한자(Access Modifier)  (0) 2019.09.16
싱글톤(Singleton)  (0) 2019.09.16
공지사항
최근에 올라온 글