728x90
Getter : 데이터를 가져올때
Setter : 데이터를 설정할때 사용함
// getter
String get firstMember{ // getter 특징은 () 없이 바로 {} 시작 반환값 즉 어떤 걸 리턴 하는지 앞에 자료형 적어주면 됨
return this.members[0];
}
// setter
set firstMember(String name){ // setter 특징은 () 사용하는데 무조건 하나의 파라미터만 들어감
this.members[0] = name;
}
void main()
{
Idol blackPink = Idol(
"블랙핑크",
['지수', '제니', '리사', '로제'],
);
Idol bts = Idol.fromList([
['RM', '진', '슈가', '뷔', '정국'],
"BTS",
]);
print(blackPink.firstMember); // 겟터 사용하는 방법
print(bts.firstMember);
// 셋터 사용하는방법
blackPink.firstMember = "우기";// 셋터에 값을 전달할때 하나의 값만 줄수 있어서 셋터 정의할때 하나의 파라미터만 넣을수 있는거임
bts.firstMember = "우기";
print(blackPink.firstMember);
print(bts.firstMember);
}
class Idol{
final String name ;
final List<String> members;
Idol(this.name, this.members);
// 네임드 생성자
Idol.fromList(List values)
: this.members = values[0],
this.name = values[1];
// getter
String get firstMember{ // getter 특징은 () 없이 바로 {} 시작 반환값 즉 어떤 걸 리턴 하는지 앞에 자료형 적어주면 됨
return this.members[0];
}
// setter
set firstMember(String name){ // setter 특징은 () 사용하는데 무조건 하나의 파라미터만 들어감
this.members[0] = name; // final 키워드를 쓰면 이 값 변경 불가능임
// 지금은 가능함 List는 final이어도 값 변경 가능함 dart : List 특징임
}
}
근본적인 의문
Getter && Setter 왜 씀?
// getter
String get firstMember{
return this.members[0];
}
// getter 와 기능이 똑같은 함수
String GetFirstMember(){
return this.members[0];
}
둘다 똑같이 첫번째 멤버를 리턴 하는데 왜 굳지? 그냥 함수 쓰면 되는거 아님 ? 이라고 생각할수 있는데
정답임 그냥 뉘앙스에 차이 Getter 는 간단하게 값을 하나 가져올때 사용하고 함수는 값을 좀더 가공 할때 사용한다고 생각하면 됨 정답은 없음 어떨때 뭐 쓰고 뭐 쓰고 그런건 절대 아님 어떤걸 사용해도 상관 없임
의문 2 immutable 프로그래밍 많이 해서 final 키워드 넣어서 값 못바꾸게 한다고 했음
그래서 현대에서 사실상 setter는 잘 사용하지 않음 의도와 멀어지기 때문
class Idol{
final String name ;
final List<String> members;
//1 리스트 값 변경 가능
set firstMember(String name){
this.members[0] = name;
// final 키워드를 쓰면 이 값 변경 불가능임
// 지금은 가능함 List는 final이어도 값 변경 가능함 dart : List 특징임
}
// 2 // 하지만 이렇게 리스트를 받아서 아에 members를 바꾸는건 못함
set firstMember(List<String> members){
this.members = members;
}
.
..
...
사실상 immutable 프로그래밍 할때는 setter가 쓸모 없어지는것임 실제 그런이유 때문에 현대 프로그래밍에서는 셋터 잘 사용안함
setter를 쓰게 되면 원래 의도했던 값을 못바꾸게 하려는 원래 의도에서 어긋나기 때문
728x90
'APP > Dart' 카테고리의 다른 글
dart 객체지향 프로그래밍 상속 (Inheritance) 눈물주의.. (0) | 2022.08.16 |
---|---|
dart 객체지향 프로그래밍 Private 속성 (0) | 2022.08.16 |
dart 문법 총 정리 OOP (객체지향 프로그래밍) immutable 프로그래밍 이란? , 생성자 앞에 const 키워드를 붙이면 어떻게 되는가 (0) | 2022.08.04 |
dart 문법 총 정리 OOP (객체지향 프로그래밍) 1. 생성자 (0) | 2022.08.04 |
dart 문법 총 정리 5. typedef (0) | 2022.07.26 |