[Dev Log] Dart - 5 (클래스 -2)

이건우·2023년 11월 22일
0

TiL

목록 보기
67/72

기억에 남는것

1. Casecade Notation

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();
}

2. Enums

바보같은 실수들을 안만들게끔 도와준다.!

예를 들면 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();
}

3. Abstract Classes 추상화 메서드

추상화 클래스로는 객체를 생성할 수 없다. 추상화 클래스는 다른 클래스들이 직접 구현해야 하는 메소드들을 모아놓은 일종의 청사진 이라 보면된다.

abstract class Human {
	void walk();
}

class Player extends Human {
	final String name;
	XpLevel xp;
	Team team;
	
	void walk(){
		print('i m walk now')
	}
}

4. InHeritance 상속 클래스

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()
}

5. Mixins

클래스에 property를 추가할 때 매우 유용하다. with 라는 키워드를 사용해서 단순히 Mixin 내부의 프로퍼티와 메소드를 가져오는 것이다.

조건은 생성자가 없는 클래스여야 한다

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글