//Idol class
class Idol {
String name = '블랙핑크';
List<String> members = ['지수', '제니', '리사', '로제'];
Idol(); // 기본 생성자 (생략 가능)
void sayHello() {
print('안녕하세요 블랙핑크입니다.');
}
void introduce() {
print('저희 멤버는 지수, 제니, 리사, 로제가 있습니다.');
}
}
// 사용
void main() {
Idol blackPink = Idol();
print(blackPink.name);
print(blackPink.members);
blackPink.sayHello();
blackPink.introduce();
}
class Idol {
//...
Idol(String name, List<String> members)
: this.name = name,
this.members = members;
//...
}
// 사용
void main() {
Idol blackPink = Idol(
'블랙핑크',
['지수', '제니', '리사', '로제'],
);
}
class Idol {
//...
Idol(this.name, this.members);
//...
}
class Idol {
// ...
Idol(this.name, this.members); // 기본 컨스트럭터
Idol.fromList(List values) // 네임드 컨스트럭터
: this.members = values[0],
this.name = values[1];
// ...
}
// 사용
void main() {
Idol bts = Idol.fromList(
[
['RM', '진', '슈가', '제이홉', '지민', '뷔', '정국'],
'BTS',
]
);
}
클래스 내 필드의 값이 할당된 후 변하지 않도록 설계
// 1. 변수에 final 키워드 추가
class Idol {
final String name; // immutable programming
final List<String> members; // immutable programming
// 2. Constructor를 const 로 선언
const Idol(this.name, this.members); // 사용할 때도 const 추가
const Idol.fromList(List values) // const 추가는 선택사항
: this.members = values[0],
this.name = values[1];
// ...
}
// 사용
void main() {
Idol blackPink = const Idol( ... );
}
const 로 선언할 경우 같은 값을 갖는 인스턴스를 생성하게 되면 메모리값도 동일
void main() {
Idol blackPink = const Idol(
'블랙핑크',
['지수', '제니', '리사', '로제'],
);
Idol blackPink2 = const Idol(
'블랙핑크',
['지수', '제니', '리사', '로제'],
);
print(blackPink == blackPink2); // true
}