Dart에서 클래스는 어떻게 사용할까?
기본적인 클래스 및 생성자 구조와 다양한 속성들에 대해 기록하였다.
Basic Class
class Player {
String name = "JP";
final String name = "JP";
int xp = 1500;
void sayHello() {
var name = "JPJP";
print("Hi my name is $name");
print("Hi my name is ${this.name}")
}
}
void main() {
var player = Player();
player.name;
player.xp;
}
Constructors
class Player {
late final String name;
int xp;
Player(String name, int xp) {
this.name = name;
this.xp = xp;
}
Player(this.name, this.xp);
}
void main() {
var player = Player("JP", 31);
}
Named Constructor Parameters
class Player {
late final String n ame;
int xp, age;
String team;
Player({this.name = "Default", required this.xp, required this.team, required this.age});
}
void main() {
var player = Player("JP", 31, "red", 12);
var player = Player(name:"JP", age:12, team:"red", xp:31);
}
Named Constructor
class Player {
late 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;
}
void main() {
var bluePlayer = Player.createBluePlayer(name:"JP", age:21);
var redPlayer = Player.createRedPlayer("EL", 23);
}
Cascade Notation
class Player {
late final String name;
int xp, age;
String team;
Player({
required this.name,
required this.xp,
required this.team,
required this.age
});
}
void main() {
var user = Player(name:"JP", xp:0, team:"blue", age:21)
..name = 'EL'
..xp = 9999
..team = 'red';
}
Enums
enum Team {red, blue}
class Player {
late final String name;
int xp, age;
Team team;
Player({
required this.name,
required this.xp,
required this.team,
required this.age
});
}
void main() {
var user = Player(name:"JP", xp:0, team:"blue", age:21)
..name = 'EL'
..xp = 9999
..team = Team.blue;
}
Abstract Classes
abstract class Human {
void walk();
}
class Player extends Human {
void walk() {
print('im walking');
}
}
class Coach implements Human {
void walk() {
print('the coach is walking');
}
}
Inheritance
class Human {
final String name;
Human(this.name);
void sayHellao() {
print('Hi my name is $name');
}
}
enum Team {red, blue}
class Player extends Human {
final Team team;
Player({
required this.team,
required String name
}) : super(name);
@override
void sayHello() {
super.sayHello();
print("and I play for ${team}");
}
}
void main() {
var player = Player(team:Team.red, name:'JP');
player.sayHello();
}
Mixins
enum Team {red, blue}
mixin Strong {
final double strengthLevel = 1500.99;
}
mixin QuickRunner {
void runQuick() {
print("runnnnnn!");
}
}
mixin Tall {
final double height = 1.99;
}
class Player with Strong, QuickRunner, Tall {
final Team team;
Player({
required this.team,
required String name
});
}
class Horse with Strong, QuickRunner {
}
void main() {
var player = Player(name:"JP", team:Team.red);
player.runQuick();
}