클래스란?
클래스는 객체를 정의하는 설계도 입니다.
현실 세상에 존재하는 대부분의 것들은 클래스로 표현할 수 있습니다.
객체란
객체란 클래스를 통해 현실 세계에 뿌리내릴 수 있는 것을 말합니다. 아직 현실 세계에 존재하지는 않지만 존재할 수 있는 가능성이 있는 것을 객체라고 합니다. 그리고 현실세계에 존재하게 되면 인스턴스가 되었다고 합니다.
class Dog {
String name = 'Toto';
int age = 10;
String color = 'white';
int thirsty = 100;
// 행위
void drinkWater(Water w) {
w.drink();
thirsty = thirsty - 50;
}
}
class Water {
double liter = 2.0;
void drink() {
liter = liter - 0.5;
}
}
// 코드의 진입점
void main() {
Dog dog1 = new Dog(); // 객체 생성(메모리에 로드)
Dog dog2 = Dog(); // new 생략 가능
print('이름은 ${dog2.name}');
print('나이는 ${dog2.age}');
print('색상은 ${dog2.color}');
print('목마름 지수는 ${dog2.thirsty}');
print("================================");
dog2.thirsty = dog2.thirsty - 50;
print('목마름 지수는 ${dog2.thirsty}');
// 객체란 상태와 행위를 함께 지니며 행위를 통해서 상태를 변경한다.
Dog dog3 = Dog();
Water water = Water();
dog3.drinkWater(water);
//
}
생성자
생성자는 클래스를 객체로 만들 때 초기화를 위한 함수입니다.
선택자 매개변수
Dart 언어는 오버로딩이 없습니다. 대신 더 강력한 선택적 매개변수 방식을 사용합니다. 문법은 매개변수를 {}로 감싸면 됩니다.
함수({매개변수, 매개변수})
import 'dog.dart';
void main() {
Dog d1 = Dog();
Dog d2 = Dog();
// Person p1 = Person('가나디', 100);
Person p2 = Person(money: 500, name: '가나디');
}
class Person {
String? name;
int? money;
// dart 에서는 생성자 오버로딩을 지원하지 않는다.
// Person(this.name);
// Person(this.name, this.money);
// 선택적 매개 변수를 활용하면 생성자 오버로딩을 선언할 필요가 없다.
Person({this.name, this.money});
}
cascade 연산자
.. 연산자를 사용하면 코드 한 줄로 객체를 변수로 넘겨주면서 객체가 가진 함수를 호출할 수 있는 유용한 표기법입니다.
void main() {
// cascade 연산자
// 코드 한 줄로 객체를 변수로 넘겨주면서 객체가 가진 함수를 호출할 수 있는
// 유용한 표기법이다.
Chef c1 = Chef('Lee')..cook(); // cascade 연산
// c1.cook();
}
class Chef {
String name;
Chef(this.name);
void cook() {
print('요리를 시작합니다');
}
}
'Flutter' 카테고리의 다른 글
| Dart 문법 - 상속 (1) | 2025.08.18 |
|---|---|
| Dart 문법 - dart null Safety (3) | 2025.08.18 |
| Dart 문법 - 함수 (1) | 2025.08.18 |
| Dart 문법 - 조건문 (1) | 2025.08.13 |
| Dart 문법 - 연산자 (2) | 2025.08.13 |