Menu
Coddy logo textTech

Constructeur par défaut

Fait partie de la section Programmation Orientée Objet du Journey Dart de Coddy — leçon 10 sur 110.

Lorsque vous ne définissez aucun constructeur dans une classe, Dart fournit automatiquement un constructeur par défaut. Il s'agit d'un constructeur sans paramètres qui crée simplement une instance de la classe.

class Book {
  String title = 'Unknown';
  int pages = 0;
}

// Dart fournit un constructeur par défaut : Book()
Book myBook = Book();
print(myBook.title); // Unknown

Le constructeur par défaut est invisible dans votre code, mais il existe. Il ne prend aucun argument et initialise l'objet avec les valeurs par défaut que vous avez assignées aux variables d'instance.

Une fois que vous définissez votre propre constructeur, le constructeur par défaut n'est plus fourni automatiquement. Si vous souhaitez toujours un constructeur sans argument en plus d'un constructeur paramétré, vous devez le créer explicitement :

class Book {
  String title;
  int pages;

  // Constructeur par défaut explicite
  Book() : title = 'Unknown', pages = 0;

  // Constructeur paramétré
  Book.withDetails(this.title, this.pages);
}

Book book1 = Book();                      // Utilise le constructeur par défaut
Book book2 = Book.withDetails('Dart', 300); // Utilise le constructeur paramétré

Le constructeur par défaut explicite utilise une liste d'initialisation (la partie après les deux-points) pour définir les valeurs initiales. Ce modèle est utile lorsque vous souhaitez proposer plusieurs façons de créer des objets à partir de la même classe.

challenge icon

Défi

Facile

Construisons un système d'inventaire de produits simple qui illustre à la fois les constructeurs par défaut implicites et explicites.

Vous allez créer deux fichiers pour organiser votre code :

  • product.dart : Définissez une classe Product qui propose deux façons de créer des produits :
    • Un constructeur par défaut explicite Product() qui initialise name à 'Unnamed' et price à 0.0 en utilisant une liste d'initialisation
    • Un constructeur nommé Product.withDetails qui accepte les paramètres name et price
    • Une méthode display() qui affiche : Product: [name] - $[price]
  • main.dart : Importez votre classe de produit et créez deux produits :
    • Un utilisant le constructeur par défaut
    • Un utilisant le constructeur nommé avec 'Laptop' et 999.99
    Appelez display() sur chaque produit.

Votre classe Product doit avoir deux variables d'instance :

  • String name
  • double price

Format de sortie attendu :

Product: Unnamed - $0.0
Product: Laptop - $999.99

Aide-mémoire

Lorsqu'aucun constructeur n'est défini dans une classe, Dart fournit automatiquement un constructeur par défaut sans paramètres :

class Book {
  String title = 'Unknown';
  int pages = 0;
}

Book myBook = Book(); // Uses implicit default constructor
print(myBook.title); // Unknown

Une fois que vous définissez votre propre constructeur, le constructeur par défaut n'est plus fourni automatiquement. Pour avoir à la fois un constructeur sans argument et un constructeur paramétré, vous devez les créer explicitement :

class Book {
  String title;
  int pages;

  // Explicit default constructor with initializer list
  Book() : title = 'Unknown', pages = 0;

  // Named constructor
  Book.withDetails(this.title, this.pages);
}

Book book1 = Book();                      // Uses default
Book book2 = Book.withDetails('Dart', 300); // Uses named constructor

Le constructeur par défaut explicite utilise une liste d'initialisation (après les deux-points) pour définir les valeurs initiales.

Essayez vous-même

import 'product.dart';

void main() {
  // TODO: Créer un produit en utilisant le constructeur par défaut
  
  // TODO: Créer un produit en utilisant le constructeur nommé avec 'Laptop' et 999.99
  
  // TODO: Appeler display() sur chaque produit
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet