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
'개발 수업 > JAVA' 카테고리의 다른 글
[Java] 클래스/메소드(메소드 오버로딩(overloading)) (0) | 2023.05.12 |
---|---|
[Java] 클래스/메소드(리턴(return)문) (0) | 2023.05.12 |
[Java] 클래스/접근제한자 (0) | 2023.05.11 |
[Java] 클래스/메소드(method)(메소드 선언,리턴문) (0) | 2023.05.11 |
[Java] 클래스/메소드(Method) (0) | 2023.05.10 |