생성자 기초
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 RetrieverDart는 또한 매개변수 목록에서 직접 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핵심 포인트: 생성자는 모든 객체가 생성되는 시점에 데이터와 함께 적절히 초기화되도록 보장하여, 나중에 수동으로 변수를 설정해야 하는 번거로움을 줄여줍니다.
챌린지
쉬움도서 시스템을 구현하기 위해 PHP 파일(book.dart 및 driver.dart)이 제공됩니다.
작업 내용:
book.dart의Book클래스에서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");
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.