Menu
Coddy logo textTech

コンストラクタの基礎

CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 8/110。

コンストラクターは、新しいオブジェクトを作成するときに自動的に実行される特別なメソッドです。作成した瞬間に、オブジェクトのインスタンス変数を初期化します。

以下はconstructorを持つクラスの例です:

class Dog {
  String name;
  String breed;

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

constructor は class と同じ名前です。object を作成するときに parameters を渡します。

constructor に引数を渡して object を作成します:

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

constructor によって設定された variables にアクセスします:

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を手動で記述する必要をなくすShorthandは、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

重要なポイント:コンストラクターによって、すべてのオブジェクトは作成された瞬間にデータで適切に初期化されるため、後から手動で変数を設定する手間が省けます。

challenge icon

チャレンジ

簡単

書籍システムを実装するために、PHP ファイル(book.dartdriver.dart)が与えられています。

タスク:

  • titleauthorpages を初期化するコンストラクターを追加して、book.dartBook クラスを完成させてください。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");
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: Dartオンラインコンパイラ