생성자 기초
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 110개 중 8번째.
생성자는 새 객체를 만들 때 자동으로 실행되는 특별한 메서드입니다. 생성되는 순간 객체의 인스턴스 변수를 초기화합니다.
다음은 생성자가 있는 클래스의 예입니다:
class Dog {
late String name; // late: 생성자 본문에서 설정됨
late 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는 3살
print('${whiskers.name} is ${whiskers.age}'); // Whiskers는 1살핵심 요점: 생성자는 모든 객체가 생성되는 순간 데이터로 올바르게 초기화되도록 하여, 나중에 변수를 수동으로 설정해야 하는 번거로움을 덜어 줍니다.
챌린지
쉬움책 시스템을 구현할 Dart 파일(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 주석을 따르세요.
직접 해보기
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");
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 Dart 컴파일러