배우게 된 계기
- 예전부터 배우고 싶은 언어 중 하나였다.
- 그러다 이번에 채팅 어플을 개발한다는 소식이 들려와 본격적으로 어플을 만들어 보려고한다.
- 너무 잡탕밥이 되어가는 개발인생인거 같지만 언젠가 쓸모있지 않겠는가...
본론
- 자바언어랑 흡사한 부분이 많아 다른부분만 설명할 것이다.
생성자 [선택적 매개변수 사용]
Rectangle({this.origin = const Point(0, 0), this.width = 0, this.height = 0});
- { } 다음과 같이 자바 예에 있는 4개의 생성자를 모두 대체하는 하나의 생성자이다.
- dart에는 Over loading이 없다.
- dart는 null check를 한다. nullable한 타입이 아니라면 requred를 붙이거나 초기값을 넣어 줘야한다.
- 다음과 같이 사용시 nameed param으로 사용할 수 있다.
읽기전용 변수추가 (Read Only) = private 접근제한자
int _speed = 0;
- _를 추가하여 읽기 전용변수를 만들 수 있다.
팩토리 만들기
- short Description: 팩토리란 자바 핵심 패턴 중 하나인 singleTon Pattern을 따른다.
-> 자세히 알아보기
abstract class Pizza {
late String orderNumber;
double getPrice();
factory Pizza.fromJson(Map<String,dynamic> json) {
switch (json['type'] as PizzaType) {
case PizzaType.HamMushroom:
return HamAndMushroomPizza(json['orderNumber’]);
case PizzaType.Deluxe:
return DeluxePizza(json['orderNumber’]);
case PizzaType.Seafood:
return SeafoodPizza(json['orderNumber’]);
}
}
}
- 예제는 친근한 피자로 들겠다.
- java에서 static 생성자로 하나의 인스턴스를 돌려쓰는것이랑 같다.
dynamic = Object = any
- 위 코드에서 보인다. 어떤 형이던 가질수 있는 형태이다.
const & final 차이점
- const -> compile 때 할당 -> 코드를 번역할때
- final -> runtime 때 할당 -> 코드를 읽을때