Dart에서 게터(Getter)와 세터(Setter)는 객체의 속성에 접근하고 수정하는 데 사용되는 특별한 메서드입니다. 이를 통해 캡슐화(Encapsulation)를 구현하고, 속성에 대한 접근을 제어할 수 있습니다.
class Person {
String _name; // 비공개 변수
// 생성자
Person(this._name);
// 게터
String get name => _name;
// 세터
set name(String newName) {
if (newName.isNotEmpty) {
_name = newName;
} else {
throw ArgumentError('Name cannot be empty');
}
}
}
void main() {
var person = Person('Alice');
print(person.name); // Alice
person.name = 'Bob';
print(person.name); // Bob
// person.name = ''; // 오류 발생
}
class Document {
String _content;
int _readCount = 0;
int _updateCount = 0;
Document(this._content);
String get content {
_readCount += 1;
return _content;
}
set content(String content) {
_content = content;
_updateCount += 1;
}
String get statistic => "readCount: $_readCount / updateCount: $_updateCount";
}
void main() {
final doc = Document("Initial content");
// 조회
print(doc.content); // Initial content
print(doc.statistic); // readCount: 1 / updateCount: 0
// 수정
doc.content = "Updated content";
print(doc.statistic); // readCount: 1 / updateCount: 1
}
_
(언더바)를 붙여 비공개 변수로 선언하면 외부에서 직접 접근할 수 없습니다.