Clases públicas y clases privadas en Dart y Flutter

Tiempo de lectura: 2 minutos

Hoy vamos a ver la diferencia entre clases públicas y privadas en Dart.

Dart utiliza convenciones de nomenclatura y paquetes para controlar la visibilidad en lugar de modificadores de acceso como public o private.

Clases Públicas en Dart

  1. Acceso Universal:
  • En Dart, cualquier clase, método o variable que no comience con un guion bajo (_) es pública. Esto significa que puede ser accedida desde cualquier lugar, incluidos otros archivos y paquetes.
  1. Uso Típico:
  • Las clases públicas se utilizan cuando deseas que una clase esté disponible para cualquier otra parte del programa.
  1. Declaración:
  • Simplemente se declara sin ningún prefijo especial. Ejemplo:
    dart class MiClasePublica { // Código de la clase }

Clases Privadas en Dart

  1. Acceso Limitado al Paquete:
  • En Dart, cualquier clase, método o variable que comience con un guion bajo (_) se considera privada. Esto significa que solo es accesible desde el mismo archivo en el que se declara.
  1. Uso Típico:
  • Las clases privadas se utilizan para encapsular detalles de implementación que no deben ser accesibles fuera del archivo donde se encuentran.
  1. Declaración:
  • Se declara con un guion bajo (_) como prefijo. Ejemplo:
    dart class _MiClasePrivada { // Código de la clase }

Ejemplo Comparativo en Dart

Supongamos que tienes el siguiente proyecto Dart con dos archivos: lib/paquete1.dart y lib/paquete2.dart.

Clase Pública

// Archivo: lib/paquete1.dart
class MiClasePublica {
    // Código de la clase
}

Clase Privada

// Archivo: lib/paquete1.dart
class _MiClasePrivada {
    // Código de la clase
}

Acceso desde otro archivo en el mismo paquete

Archivo: lib/paquete1.dart

// Archivo: lib/paquete1.dart
class MiClasePublica {
    // Código de la clase
}

class _MiClasePrivada {
    // Código de la clase
}

void main() {
    MiClasePublica obj1 = MiClasePublica();         // Acceso permitido
    _MiClasePrivada obj2 = _MiClasePrivada();       // Acceso permitido
}

Acceso desde otro archivo en otro paquete

Archivo: lib/paquete2.dart

// Archivo: lib/paquete2.dart
import 'paquete1.dart';

void main() {
    MiClasePublica obj1 = MiClasePublica();         // Acceso permitido
    // _MiClasePrivada obj2 = _MiClasePrivada();   // Acceso NO permitido
}

Las clases y miembros con el prefijo _ son privados y solo accesibles dentro del mismo archivo.

Deja un comentario