다트에서 getter와 setter를 사용하는 방법은?
_____A: Getter는 객체의 필드 값을 읽을 때 사용하는 메서드이고, Setter는 필드 값을 설정하거나 변경할 때 사용하는 메서드입니다. 다트를 포함한 객체지향 언어에서 캡슐화를 위해 자주 사용됩니다.
Q: 다트에서 Getter를 어떻게 선언하나요?
A: Getter는 클래스 내부에서 `get` 키워드를 사용해 선언합니다. 기본 문법은 다음과 같습니다:
```dart
class MyClass {
int _value;
MyClass(this._value);
int get value => _value; // getter 선언
}
```
Q: 다트에서 Setter를 어떻게 선언하나요?
A: Setter는 클래스 내부에서 `set` 키워드를 사용하며, 하나의 매개변수를 받습니다. 기본 문법은 다음과 같습니다:
```dart
class MyClass {
int _value;
MyClass(this._value);
set value(int newValue) {
_value = newValue;
}
}
```
Q: 다트에서 왜 Getter와 Setter를 사용하나요?
A: 직접 필드에 접근을 막고, 읽기 또는 쓰기 동작에 추가 로직을 넣고 싶을 때 사용합니다. 예를 들어 값 검증, 로그 출력, 계산된 값 반환 등을 구현할 수 있어 클래스 설계가 유연해집니다.
Q: 다트에서 Getter와 Setter를 동시에 사용하는 예시는 무엇인가요?
A: 다음은 private 변수 `_name`에 대한 Getter와 Setter를 함께 사용하는 예입니다:
```dart
class Person {
String _name;
Person(this._name);
set name(String newName) {
if (newName.isNotEmpty) {
_name = newName;
}
}
}
```
Q: Getter와 Setter 모두 생략하고 public 변수를 직접 사용하는 것과 어떤 차이가 있나요?
A: public 변수는 직접 접근 및 수정이 가능해 캡슐화가 깨집니다. Getter/Setter로 제어하면 외부에서의 접근과 값 변경을 안전하게 관리할 수 있습니다.
Q: 읽기 전용으로 만들고 싶은 필드는 어떻게 하나요?
A: Getter만 선언하고 Setter를 선언하지 않으면 읽기 전용 속성이 됩니다.
```dart
class MyClass {
int _value = 10;
int get value => _value; // 읽기 전용, 쓰기 불가
}
```
Q: 계산된 값을 Getter로 반환하는 예제도 있나요?
A: 네, Getter는 실제 필드가 없어도 계산된 값을 반환할 수 있습니다.
```dart
class Rectangle {
double width, height;
Rectangle(this.width, this.height);
double get area => width * height; // 계산된 값 반환
}
```
Q: Setter 내에서 값을 검증할 수도 있나요?
A: 네, Setter 메서드 내부에 조건문이나 검증 로직을 작성해 안전한 값만 할당하도록 할 수 있습니다.
Q: Dart에서 자동으로 Getter와 Setter가 생성되나요?
A: 일반적인 public 필드에는 자동 Getter/Setter가 있지만, private 변수(`_`로 시작)는 직접 Getter/Setter를 만들어야 합니다. Getter/Setter를 정의하면 기본 동작을 오버라이드할 수 있습니다.
작성자:
이윤수 [비회원]
| 작성일자: 1년 전
2024-09-19 01:52:37
조회수: 139 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 139 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.