728x90
반응형
순서
- 클래스와 생성자
- Named Constructor Parameters
- Named Constructor
클래스와 생성자
자바와 방법이 비슷하기 때문에
예시로 넘어가도 될 것 같다.
주석에 설명들을 달아놨다.
void main() {
var guy = Guy('jin', 20);
guy.Hello();
}
// 클래스 선언
class Guy{
final String name;
int age;
// 생성자 생성
Guy(this.name, this.age);
void Hello(){
var name = 'Lee';
// 메소드 안에 같은 이름의 변수가 있다면 this 사용 가능
// 하지면 없다면 웬만하면 this 안 쓰는 걸 다트에서 추천.
// this를 안써도 this로 사용 됨.
print("Hello, I am ${this.name}. ${this.age}");
}
}
// 결과
Hello, I am jin. 20
Named Constructor Parameters
함수에서 파라미터 선언 시,
파라미터 순서에 상관없이 각 key 값을 인식해서 인수들을 넣을 수 있는 것처럼
클래스 생성자에서도 똑같이 적용이 가능하다.
중괄호로 named 파라미터를 설정하고
null 처리를 위해 required 를 썼다. (디폴트 값을 넣는 대신)
아래의 예를 보자
// 클래스 선언
class Guy{
String name;
int age;
// 생성자 생성
Guy({
required this.name,
required this.age
});
void Hello(){
print("Hello, I am ${this.name}. ${this.age}");
}
}
void main() {
var guy = Guy(
name : 'jin',
age : 20,
);
guy.Hello();
}
// 결과
Hello, I am jin. 20
position 으로 만드는 경우,
required가 기본적으로 적용이 되어 있다. ( 한번 생각해봐라, 들어갈 인수 안 넣으면 동작 안하지 않음?)
named 로 만드는 경우, required가 적용이 안되어 있기 때문에 변수에 적용을 하는 것임.
Named Constructor
다른 이름의 생성자를 만들고 싶을 때 사용하는 방법이다.
마찬가지로 named로 만들수도 있고 position으로 만들 수도 있다.
아래의 예를 보자.
// 클래스 선언
class Guy{
late String name, gender;
late int age, min;
// 생성자 생성
Guy({
required this.name,
required this.age
});
// named 를 사용한 Named Constructor
Guy.man({
required String name,
required int age
}) : this.name = name,
this.age = age,
this.gender = 'male',
this.min = 1;
// position 을 사용한 Named Constructor
Guy.woman(String name, int age)
: this.name = name,
this.age = age,
this.gender = 'female',
this.min = 2;
}
void main() {
var guyMan = Guy.man(
name : 'lee',
age : 25,
);
var guyWoman = Guy.woman('park', 35);
}
728x90
반응형
'다트(Dart)' 카테고리의 다른 글
다트(Dart) Mixin (0) | 2023.03.15 |
---|---|
다트(Dart) Cascade Notation / Enum type (0) | 2023.03.15 |
다트(Dart) typedef (0) | 2023.03.14 |
다트(Dart) 연산자 (0) | 2023.03.14 |
다트(Dart) 함수 (0) | 2023.03.14 |
댓글