void main() {
Idol bigBang = Idol();
bigBang.introduce();
}
class Idol{
String name = '빅뱅';
List<String> members = ['GD', 'TOP', '대성', '승리'];
introduce(){
for(String member in members){
print('안녕하세요 $member 입니다.');
}
}
}
class 생성 방법은 위와 같이 class 클래스명 {}으로 생성하고 {} 내부에 변수, 함수를 지정할 수 있다.
하지만 위와 같은 방법으로 class를 생성한다면 아이돌이라는 클래스에 빅뱅 이외의 아이돌은 만들 수 없다.
이런 문제를 해결하려면 constructor(생성자)를 작성해주면 된다
void main() {
Idol aespa = Idol(
'에스파',
['카리나', '윈터', '지젤', '닝닝']
);
aespa.introduce();
}
class Idol {
String name;
List<String> members;
Idol(String name, List<String> members)
: this.name = name,
this.members = members;
introduce() {
for (String member in this.members) {
print('안녕하세요 $member 입니다.');
}
}
}
달라진 코드만 뺴서 보자
Idol(String name, List<String> members)
: this.name = name,
this.members = members;
이렇게 constructor를 작성하면 Idol class를 선언할떄 name과 members를 파라미터로 받아와서 클래스 내부의 name과 members에 대입하겠다는 의미이다.
이렇게 class를 작성하면 Idol class는 하나의 설계도로서 여러 아이돌의 정보를 담을 수 있게 된다.
위처럼 생성자를 작성해도 되지만 더 간단하게 생성자를 작성하는 방법이 개발되었다.
Idol(this.name, this.members);
이렇게 작성하면 된다.
void main() {
Idol aespa = Idol.fromList(
[
['카리나', '윈터', '지젤', '닝닝'],
'에스파'
]
);
aespa.introduce();
}
class Idol {
String name;
List<String> members;
Idol(this.name, this.members);
Idol.fromList(List<dynamic> value) : this.members = value[0], this.name = value[1];
introduce() {
for (String member in this.members) {
print('안녕하세요 $member 입니다.');
}
}
}
앞에서는 기본적인 생성자 생성 방법이었고 이번엔 이런 방법도 있다는 느낌으로 적어본다
Idol.fromList(List<dynamic> value) : this.members = value[0], this.name = value[1];
이렇게 함수형으로 constructor를 작성해서 변수를 받아올 수 있다.
void main() {
Idol aespa = Idol(
'에스파',
['카리나', '윈터', '지젤', '닝닝']
);
aespa.introduce();
}
class Idol {
final String name;
final List<String> members;
Idol(this.name, this.members);
introduce() {
for (String member in this.members) {
print('안녕하세요 $member 입니다.');
}
}
}
한번 클래스를 생성하고 난 후 name, members같은 정보들이 바뀌지 않게 개발하는것을 선호한다
그럴때 변수타입 앞에 final을 붙여주면 한번 constructor로 class를 생성하고 난 후 변수를 바꿀수 없게 된다.