Menu
Coddy logo textTech

생성자 기초

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 8번째.

생성자는 새로운 객체를 생성할 때 자동으로 실행되는 특별한 메서드입니다. 이는 객체가 생성되는 시점에 객체의 인스턴스 변수들을 초기화합니다.

생성자가 있는 클래스의 예시입니다:

class Dog {
  String name;
  String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

생성자는 클래스와 동일한 이름을 가집니다. 객체를 생성할 때 매개변수가 전달됩니다.

생성자에 인수를 전달하여 객체를 생성합니다:

Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');

생성자에 의해 설정된 변수에 액세스합니다:

print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);

출력:

Rex
German Shepherd
Buddy
Golden Retriever

Dart는 또한 매개변수 목록에서 직접 this.variableName을 사용하는 단축 생성자 구문을 제공합니다:

class Dog {
  String name;
  String breed;

  // 단축형: 매개변수를 인스턴스 변수에 자동으로 할당합니다
  Dog(this.name, this.breed);
}

두 버전 모두 동일한 결과를 생성합니다. 이 축약형은 this.name = name을 수동으로 작성할 필요를 없애주는 인기 있는 Dart 기능입니다.

기본 매개변수 값을 추가할 수도 있습니다:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // age의 기본값은 1입니다.
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age의 기본값은 1입니다.

print('${fluffy.name} is ${fluffy.age}');    // Fluffy is 3
print('${whiskers.name} is ${whiskers.age}'); // Whiskers is 1

핵심 포인트: 생성자는 모든 객체가 생성되는 시점에 데이터와 함께 적절히 초기화되도록 보장하여, 나중에 수동으로 변수를 설정해야 하는 번거로움을 줄여줍니다.

challenge icon

챌린지

쉬움

도서 시스템을 구현하기 위해 PHP 파일(book.dartdriver.dart)이 제공됩니다.

작업 내용:

  • book.dartBook 클래스에서 title, author, pages를 초기화하는 생성자를 추가하여 완성하세요. Dart의 축약 구문인 Book(this.title, this.author, this.pages);를 사용하세요.
  • driver.dart에서 'Harry Potter'(저자: 'J.K. Rowling', 페이지 수: 400)에 대한 Book 객체를 생성하세요.

각 파일의 TODO 주석을 따르세요.

치트 시트

생성자(constructor)는 새로운 객체를 생성할 때 자동으로 실행되는 특별한 메서드입니다. 생성되는 시점에 객체의 인스턴스 변수를 초기화합니다.

생성자는 클래스와 동일한 이름을 가집니다:

class Dog {
  String name;
  String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

생성자에 인자(arguments)를 전달하여 객체를 생성합니다:

Dog rex = Dog('Rex', 'German Shepherd');

Dart는 매개변수 목록에서 this.variableName을 직접 사용하는 단축 생성자 구문을 제공합니다:

class Dog {
  String name;
  String breed;

  Dog(this.name, this.breed);
}

선택적 위치 매개변수(optional positional parameters)를 사용하여 기본 매개변수 값을 추가할 수 있습니다:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // age의 기본값은 1입니다
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age의 기본값은 1입니다

직접 해보기

import 'book.dart';

void main() {
  // TODO: 다음을 사용하여 Book 객체를 생성하세요:
  // title: 'Harry Potter', author: 'J.K. Rowling', pages: 400
  Book myBook = ?;

  print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨