class Player {
final String name;
int xp, age;
String team;
Player({
required this.name,
required this.xp,
required this.team,
});
// flutter 를 쓰면서 자주 쓰게될 문법
void main() {
var lee = Player(name : "nico",xp: 1500, team : 'red')
var potato = nico
..name = 'las'
..xp = 2000
..team = blue;
..sayHello();
}
바보같은 실수들을 안만들게끔 도와준다.!
예를 들면 team값을 잘못 넣을때 개발자들이 오타로 실수하지 않게끔 도와준다.
enum을 쓰기위해선 enum을 붙여주고 쓴다.
enum Team {red, blue}
enum XpLevel {beginner , medium, pro}
class Player {
final String name;
XpLevel xp;
Team team;
// String 대신에 위의 enum의 Team을 넣어준다.
}
활용 예시
(.. 위와 동일 생략)
Player({
required this.name,
required this.xp,
required this.team,
});
void main() {
var lee = Player
(name : "nico",xp: XpLevel.beginner, team : 'red');
var potato = nico
..name = 'las'
..xp = XpLevel.medium
..team = Team.blue;
..sayHello();
}
추상화 클래스로는 객체를 생성할 수 없다. 추상화 클래스는 다른 클래스들이 직접 구현해야 하는 메소드들을 모아놓은 일종의 청사진
이라 보면된다.
abstract class Human {
void walk();
}
class Player extends Human {
final String name;
XpLevel xp;
Team team;
void walk(){
print('i m walk now')
}
}
enum Team {red, blue}
class Human {
final String name;
Human(required this.name);
void sayHello() {
print("Hi my name is $name")
}
}
class Player extends Human {
final Team team ;
}
Player({
required this.team,
required String name
}) : super(name : name);
// 직접 만든 메소드로 대체(overrride) 한다
@override
void sayHello(){
super.sayHello();
print('and I play for ${team}')
}
void main() {
var player = Player(
team : Team.red,
name : 'nico'
)
player.sayHello()
}
클래스에 property를 추가할 때 매우 유용하다. with
라는 키워드를 사용해서 단순히 Mixin 내부의 프로퍼티와 메소드를 가져오는 것이다.
조건은 생성자가 없는 클래스여야 한다