Menu
Coddy logo textTech

Costruttore predefinito

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 10 di 110.

Quando non definisci alcun costruttore in una classe, Dart fornisce automaticamente un costruttore predefinito. È un costruttore senza parametri che crea semplicemente un'istanza della classe.

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

// Dart fornisce un costruttore predefinito: Book()
Book myBook = Book();
print(myBook.title); // Unknown

Il costruttore predefinito è invisibile nel tuo codice, ma esiste. Non accetta argomenti e inizializza l'oggetto con i valori predefiniti che hai assegnato alle variabili di istanza.

Una volta definito un costruttore personalizzato, il costruttore predefinito non viene più fornito automaticamente. Se vuoi comunque un costruttore senza argomenti insieme a uno parametrizzato, devi crearlo esplicitamente:

class Book {
  String title;
  int pages;

  // Costruttore predefinito esplicito
  Book() : title = 'Unknown', pages = 0;

  // Costruttore parametrizzato
  Book.withDetails(this.title, this.pages);
}

Book book1 = Book();                      // Usa quello predefinito
Book book2 = Book.withDetails('Dart', 300); // Usa quello parametrizzato

Il costruttore predefinito esplicito usa una lista di inizializzazione (la parte dopo i due punti) per impostare i valori iniziali. Questo schema è utile quando vuoi offrire più modi per creare oggetti dalla stessa classe.

challenge icon

Sfida

Facile

Costruiamo un semplice sistema di inventario dei prodotti che dimostri sia i costruttori predefiniti impliciti sia quelli espliciti.

Creerai due file per organizzare il codice:

  • product.dart: definisci una classe Product che offre due modi per creare prodotti:
    • Un costruttore predefinito esplicito Product() che inizializza name con 'Unnamed' e price con 0.0 usando una lista di inizializzazione
    • Un costruttore nominato Product.withDetails che accetta i parametri name e price
    • Un metodo display() che stampa: Product: [name] - $[price]
  • main.dart: importa la classe del prodotto e crea due prodotti:
    • Uno usando il costruttore predefinito
    • Uno usando il costruttore nominato con 'Laptop' e 999.99
    Chiama display() su ciascun prodotto.

La classe Product dovrebbe avere due variabili di istanza:

  • String name
  • double price

Formato dell'output previsto:

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

Provalo tu

import 'product.dart';

void main() {
  // TODO: Crea un prodotto usando il costruttore predefinito
  
  // TODO: Crea un prodotto usando il costruttore con nome con 'Laptop' e 999.99
  
  // TODO: Chiama display() su ciascun prodotto
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Dart online