๐ฏ class๋ฅผ ๋ง๋ค ๋๋ var์ ์ด์ฉํ๋ ๋์ ๋ช
์์ ์ผ๋ก type์ ์ง์ ํด์ฃผ์ด์ผ ํจ.
๐ฏ dart ์ธ์ด์์๋ instance๋ฅผ ๋ง๋ค ๋ 'new' ํค์๋๊ฐ ํ์์์!!
๐ฏ class์์์๋ $this.name์ฒ๋ผ 'this' ํค์๋๋ฅผ ํตํด ๋ช
์์ ์ผ๋ก ํ์ํด ์ค ํ์๊ฐ ์์!!
๐ Class
class Player {
String name = 'jino';
int xp = 100;
void sayHello(){
print("Hello, my name is $name");
}
}
void main(){
var player = Player();
player.name = 'brian';
print(player.name)
}
// brian
๐ Constructors
์ดํ์ name์ ๋ชป ๋ฐ๊พธ๊ฒ ํ๊ณ ์ถ์๋ฐ, late ์์ด final๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ฉด error๊ฐ ๋ธ!
์์ฑ์์์ ๋์ค์ name์ ์ง์ ํ๊ฒ ํ๊ณ ์ถ์๋ฐ, ์ดํ ๊ทธ ๊ฐ์ ํ์ ํ๊ณ ์ถ์ผ๋ฉด 'late final'
class Player {
late final String name;
late int xp = 100;
// ์์ฑ์ ๊ตฌํ ๋ฐฉ์ 1
Player(String name, int xp){
this.name = name;
this.xp = xp;
}
// ์์ฑ์ ๊ตฌํ ๋ฐฉ์ 2
Player(this.name, this.xp);
์ด๋ ๊ฒ ์์ฑ์๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ, late keyword๋ฅผ ๋นผ์ฃผ๋ฉด ๋จ!
}
void main(){
var player = Player("jino", 2000);
var player2 = Player("brian", 3000);
}
๐ Named Constructor Parameters
Instance๋ฅผ ๋ง๋ค ๋ ๋ง์ parameter๋ค์ด ํ์ํ ๋ ์ ์ฉํ๋ค!
class Player {
final String name;
int xp, age;
String team;
Player({
required this.name,
required this.xp,
required this.team,
required this.age
});
}
void main(){
var player = Player({ name : 'jino', xp : 300, team: 'red', age: 20 })
}
๐ Named Constructors
class Player {
final String name;
int xp, age;
String team;
Player({
required this.name,
required this.xp,
required this.team,
required this.age
});
Player.createBluePlayer({
required String name,
required int age,
}) :
this.age = age,
this.name = name,
this.team = 'blue';
this.xp = 0;
Player.createRedPlayer(String name, int age) :
this.age = age,
this.name = name,
this.team = 'red';
this.xp = 0;
}
// positional arguments ( createRedPlayer์ case )๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก required์.
void main(){
var bluePlayer = Player.createBluePlayer({name : 'jino', age : 20});
var redPlayer = Player.createRedPlayer('brian', 27);
}
๐ ์ฐ์ต ์์
class Player {
final String name;
int xp;
String team;
Player.fromJson(Map<String, dynamic> PlayerJson) :
name = PlayerJson['name'];
xp = PlayerJson['xp'];
team = PlayerJson['team'];
void sayHello() {
print("hello, my name is $name");
}
}
void main(){
var apiData = [{
"name" : "jino",
"team" : "blue",
"xp" : 0,
}, {
"name" : "brian",
"team" : "blue",
"xp" : 0,
}, {
"name" : "john",
"team" : "blue",
"xp" : 0,
}];
apiData.forEach((playerJson){
var player = Player.fromJson(playerJson);
player.sayHello();
})
// result :
Hi my name is jino
Hi my name is brian
Hi my name is john
}