Menu
Coddy logo textTech

Constructor por defecto

Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy. Lección 10 de 110.

Cuando no defines ningún constructor en una clase, Dart proporciona automáticamente un constructor predeterminado. Este es un constructor sin parámetros que simplemente crea una instancia de la clase.

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

// Dart proporciona un constructor predeterminado: Book()
Book myBook = Book();
print(myBook.title); // Unknown

El constructor predeterminado es invisible en tu código, pero existe. No acepta argumentos e inicializa el objeto con los valores predeterminados que hayas asignado a las variables de instancia.

Una vez que defines tu propio constructor, el constructor predeterminado deja de proporcionarse automáticamente. Si aún quieres un constructor sin argumentos junto con uno parametrizado, debes crearlo explícitamente:

class Book {
  String title;
  int pages;

  // Constructor por defecto explícito
  Book() : title = 'Unknown', pages = 0;

  // Constructor parametrizado
  Book.withDetails(this.title, this.pages);
}

Book book1 = Book();                      // Usa el valor por defecto
Book book2 = Book.withDetails('Dart', 300); // Usa el parametrizado

El constructor predeterminado explícito usa una lista de inicializadores (la parte después de los dos puntos) para establecer los valores iniciales. Este patrón es útil cuando quieres ofrecer varias formas de crear objetos a partir de la misma clase.

challenge icon

Desafío

Fácil

Construyamos un sistema sencillo de inventario de productos que demuestre tanto los constructores predeterminados implícitos como los explícitos.

Crearás dos archivos para organizar tu código:

  • product.dart: Define una clase Product que ofrece dos formas de crear productos:
    • Un constructor predeterminado explícito Product() que inicializa name con 'Unnamed' y price con 0.0 mediante una lista de inicialización
    • Un constructor con nombre Product.withDetails que acepta los parámetros name y price
    • Un método display() que imprime: Product: [name] - $[price]
  • main.dart: Importa tu clase de producto y crea dos productos:
    • Uno usando el constructor predeterminado
    • Uno usando el constructor con nombre con 'Laptop' y 999.99
    Llama a display() en cada producto.

Tu clase Product debe tener dos variables de instancia:

  • String name
  • double price

Formato de salida esperado:

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

Pruébalo tú mismo

import 'product.dart';

void main() {
  // TODO: Crear un producto usando el constructor por defecto
  
  // TODO: Crear un producto usando el constructor nombrado con 'Laptop' y 999.99
  
  // TODO: Llamar a display() en cada producto
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Dart online