dart class

kinghong97·2023년 5월 4일
0

class Player {
String name = 'hi';
int xp = 1000;

void hello() {
	print("Hi my name is $name");
}

}

클래스를 생성할 땐 속성에 타입을 정의해 줘야한다.
this를 쓰지 않아도 된다
변수 이름이 겹치면 써야됨

void main() {
var player = Player();
player.hello();
}

constructors

class Player {
late String name;
late int xp;
Player(String name, int xp){
this.name = name;
this.xp = xp;
}
}

class Player {
String name;
int xp;
Player(this.name, this.xp)
}
이렇게 줄이는 것도 가능

void main() {
var player = Player("hi", 1200);
var player = Player("bye", 1500);
}

named constructor parameter 도 가능

class Player {
String name;
int xp;
Player({required this.name, required this.xp})
}

void main() {
var player = Player(name:"hi", xp:1200);
}

required 붙혀두는 이유는 null 일 수도 있으면 에러나서

named constructor

class Player {
String name;
int xp;
String team;
Player({required this.name, required this.xp})
Player.createPlayer({required String name, required int xp}) : this.xp = xp, this.name = name, this.team = 'red'
}

void main() {
var player = Player.createPlayer(name:"hi", xp:1200);
}

이렇게 일반 컨스트럭쳐말고 특정 컨스트럭쳐를 만들어서 사용 가능

: 은 객체를 초기화 하겠다고 하는 것

cascade notition

class Player {
String name;
int xp;
Player({required this.name, required this.xp})
}

void main() {
var player = Player(name:"hi", xp:1200)
..name = "bye"
..xp = 100;
}

반복되는 것을 줄인다
..이 앞에 있는 클래스를 가르킨다
특징은 세미콜론을 마지막에만

enum

선택의 폭을 줄여 오타를 줄인다

enum Team { red, blue }

class Player {
String name;
int xp;
Tema team;
Player({required this.name, required this.xp, required this.team});
}

void main() {
var player = Player(name:"hi", xp:1200, team: Team.blue);
}

abstract class
추상 클래스

추상 클래스로는 객체 생성 불가

abstract class Human {
void walk();
}

추상 클래스와 추상 메소드
class, method

클래스가 어떤 모양을 가져야하는지 알려준다

class Player extends Human {
String name;
int xp;
Tema team;
Player({required this.name, required this.xp, required this.team});

void work() {
	print("walk!")
}

}

inheritance
상속

class Human {
final String name;
Human({this.name});

void hello() {
	print("hello")
}

}
enum Team { red, blue }

class Player extends Human {
Team team;

Player({required this.team, required this.name}) : super(name);

@override
void hello(){
	super.hello();
    print("bye");
}

}

super 를 이용해서 부모 클래스와 상호작용
@override 를 이용해 부모를 수정해서 가지기 가능

void main () {
var player = Player(team: Team.red, name: "hi");
}

mixin
생성자가 없는 constructor가 없는 클래스여야 한다
클래스에 프로퍼티를 넣을 때 사용

class Strong {
final double st = 15.13;
}

class QuickRun {
void run() {
print("run!")
}
}

class Player with Strong, QuickRun {
String name;
int xp;
Tema team;
Player({required this.name, required this.xp, required this.team});
}

이렇게 붙여버린다

0개의 댓글