Flutter

Dart 문법 - 클래스

whs5758 2025. 8. 18. 17:58

클래스란?

클래스는 객체를 정의하는 설계도 입니다.

현실 세상에 존재하는 대부분의 것들은 클래스로 표현할 수 있습니다. 

 

객체란

객체란 클래스를 통해 현실 세계에 뿌리내릴 수 있는 것을 말합니다. 아직 현실 세계에 존재하지는 않지만 존재할 수 있는 가능성이 있는 것을 객체라고 합니다. 그리고 현실세계에 존재하게 되면 인스턴스가 되었다고 합니다. 

 

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