본문 바로가기
개발 수업/JAVA

[Java] 클래스/Getter와 Setter 메소드

by 오늘 하루s 2023. 5. 12.
728x90
더보기

Day10-3. 230511

클래스

Getter와 Setter 메소드

 일반적으로 객체 지향 프로그래밍에서는 객체의 필드를 객체 외부에서 직접적으로 접근하는 것을 막음.

-> 외부에서 마음대로 변경할 경우 객체의 무결성(결점이 없는 성질)이 깨질 수 있기 때문.

 

Setter

=> 메소드를 통해 필드를 변경하는 방법을 선호.

필드는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 필드에 접근하도록 유도.

-> 메소드는 매개값을 검증해서 유효한 값만 객체의 필드로 저장할 수 있기 때문.

-> 이러한 역할을 하는 메소드 : Setter.

필요성 : 외부에서 엉뚱한 값으로 변경할 수 없도록

더보기

외부에서 주어진 값을 필드 값으로 수정

- 필요할 경우 외부의 값을 유효성 검사.

setFieldName(타입 변수) 메소드
- 매개 변수 타입은 필드의 타입과 동일

 

Getter

=> 외부에서 객체의 데이터를 읽을 때도 메소드를 사용하는 것이 좋음.

-> 필드값을 직접 사용하면 부적절한 경우도 있기 때문. 이러한 경우 메소드로 필드값을 가공한 후 외부로 전달하면 됨.

-> 이러한 역할을 하는 메소드 : Getter.

필요성 : 읽기 전용 필드가 있을 수 있음.

더보기

private 필드의 값을 리턴하는 역할 - 필요할 경우 필드 값 가공

getFieldName() 또는 isFieldName() 메소드
- 필드 타입이 boolean 일 경우 isFieldName() 

클래스를 선언할 때 가능하다면 필드를 private로 선언해 외부로부터 보호하고, 필드에 대한 Setter와 Getter 메소드를 작성해서 필드값을 안전하게 변경/사용하는 것이 좋음.

 

연습)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Car02 {
     //필드
     private char haveAi='Y'//AI탑재유무 - 'Y' 'N'
     private boolean haveNavi=true// 네비게이션유무 - true false 
     private int maxSpeed=300//최대속도
 
     //메소드
     //Setter
     public void setHaveAi(char haveAi) {
         this.haveAi = haveAi;
     }
     
     public void setHaveNavi(boolean haveNavi) {
         this.haveNavi = haveNavi;
     }
     
     public void setMaxSpeed(int maxSpeed) {
         this.maxSpeed = maxSpeed;
     }
 
    //Getter
     public char getHaveAi() {
         return this.haveAi;
     }
     
     public boolean isHaveNavi() {
         return this.haveNavi;
     }
     
     public int getMaxSpeed() {
         return this.maxSpeed;
     }
}
cs

 

main 클래스>

1
2
3
4
5
6
7
   char haveAi = car1.getHaveAi();
   boolean haveNavi = car1.getHaveNavi();
   int maxSpeed = car1.getMaxSpeed();
  
   System.out.println(haveAi);
   System.out.println(haveNavi);
   System.out.println(maxSpeed);
cs
더보기

* 실행 결과

Y
true
300

 

728x90