Dart에서 클래스(Class)와 생성자(Constructor)
Dart에서 클래스랑 생성자를 간단하게 정리.
클래스(Class)란?
객체가 가져야 하는 속성과 기능을 정의한 설계도(blueprint)
- 클래스는 변수와 메서드를 포함할 수 있음
- 객체(Object)는 이 클래스를 기반으로 실제 메모리에 생성된 실체
class Person {
String name = 'John';
int? age;
String? sex;
}
객체(Object)와 인스턴스(Instance)
- 객체
- 클래스로부터 생성된 실제 메모리 상의 데이터
- 인스턴스
- “객체”와 같은 의미이지만, 클래스에서 생성되었다는 관계를 강조할 때 사용
즉, 클래스를 정의하면 설계도가 생기고, 그 설계도를 기반으로 실제로 만든 것이 인스턴스(객체)이다.
기본 생성자 (Default Constructor)
- 생성자는 클래스로부터 객체를 생성할 때 자동으로 호출되는 함수
- Dart의 기본 생성자는 별도로 정의하지 않으면 자동으로 제공됨
- new 키워드는 선택 사항 (생략 가능)
class Person {
String name = 'John';
int? age;
String? sex;
}
void main() {
Person p1 = new Person(); // 생성자 호출
p1.age = 30;
print(p1.age); // 30
}
null-safety
Dart 2.0 이후에는 null-safety가 도입되어 null을 허용할 변수는 타입 뒤에 ?를 붙여야 함.
int? age; // null을 가질 수 있음
int age; // null 불가능
DartPad에서는 null-safety를 ON/OFF 할 수 있음
Named Argument (명명된 인자)
여러 개의 인자를 받을 때, 선택적으로 지정 가능하도록 하는 문법
- 생성자의 인자 부분 {}가 named argument를 의미함
- 인스턴스를 만들 때 Person(age: 30)처럼 인자 이름을 명시적으로 써야 함
- 모든 인자를 다 줄 필요 없이, 원하는 값만 선택적으로 전달 가능
class Person {
String? name = 'John';
int? age;
String? sex;
// Named argument 생성자
Person({String? name, int? age, String? sex}) {
this.name = name;
this.age = age;
this.sex = sex;
}
}
int addNumber(int num1, int num2) {
return num1 + num2;
}
void main() {
Person p1 = new Person(age: 30); // age만 지정
Person p2 = new Person(sex: 'male'); // sex만 지정
print(p1.age); // 30
print(p2.age); // null
print(addNumber(3, 4)); // 7
}
'Flutter > 2.0' 카테고리의 다른 글
| Flutter에서 Drawer 메뉴 만들기 (0) | 2021.08.10 |
|---|---|
| Flutter에서 AppBar 메뉴 아이콘 추가하기 (0) | 2021.08.10 |
| 캐릭터 페이지 디자인 실습 (0) | 2021.08.10 |
| 프로젝트 폴더와 기본 코드 이해하기 (0) | 2021.08.10 |
| Flutter에서의 위젯(Widget)이란? (0) | 2021.08.09 |