클래스 첫 음절은 대문자로 시작해야한다 개발자들간의 암묵적인 약속이라고 생각하면 된다
클래스를 생성할 때 기존에 아래 처럼 void main 안에서 코드를 생성하는게 아닌 밖에서 만들게 된다
void main() {
}
//클래스
class Point {
}
현재 아래 코드를 생성했는데 에러가 발생했다
class Point {
double x;
double y;
}
x와 y에 값이 들어가 있지 않기 때문에 에러가 발생했으므로 Null 연산자를 선언하여 x와 y값을 사용할 수 있게한다
class Point {
double? x;
double? y;
}
포인트라는 객체를 만들 땐 class를 사용할껀데 변수를 선언할 때 앞에 타입이 오게 된다
클래스로 만들어진 객체를 만들 때 해당 객체는 클래스의 이름을 따라간다
그러므로 void 안에 Point를 넣는다
void main() {
Point point =
}
클래스에서 오브젝트를 생성할 땐 이런식으로 사용한다
void main() {
Point point = Point();
}
아무값을 입력하지 않은상태에서 생성된 기본 생성자가 이런 형태이다
print로 확인결과 인스턴스로 잘 생성되었다는 문구가 확인되었다
명명 생성자
개발자가 임의적으로 생성자를 안에 만들어준다
class Point {
double? x;
double? y;
Point();
}
Point();가 기초 생성자 그 자체가 되기 때문에 같은 값으로 나온다
class Point {
double x;
double y;
Point(this.x, this.y);
}
this로 x와 y에 값을 받는다고 선언했다
선언했기 때문에 double에 ?인 Null 선언을 지워도된다
하지만 이번에 Point();에 에러가 발생했다
compileDDC
main.dart:2:22: Error: Too few positional arguments: 2 required, 0 given.
Point point = Point();
이 뜻은 x와 y 값은 받기로 했으나 값을 적지 않았기 때문에 발생한 오류이다
1, 2를 넣어줌으로써 x와 y에 값을 넣어주게 된다
void main() {
Point point = Point(1,2);
print(point);
}
this로 인해 넣은 값을 print로 보기위해선 . 을 이용한다
이제 클래스들 안에 있는 객체에 접근가능하다
'Flutter > Dart' 카테고리의 다른 글
Dart 클래스 - 생성자#1 (0) | 2024.06.18 |
---|---|
Dart 연산자#2 (0) | 2024.06.17 |
Dart 연산자#1 (0) | 2024.06.14 |
Dart 변수와 타입#2 (0) | 2024.06.14 |
Dart 변수와 타입 (0) | 2024.06.13 |