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
- 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.
- Uso Típico:
- Las clases públicas se utilizan cuando deseas que una clase esté disponible para cualquier otra parte del programa.
- Declaración:
- Simplemente se declara sin ningún prefijo especial. Ejemplo:
dart class MiClasePublica { // Código de la clase }
Clases Privadas en Dart
- 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.
- 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.
- 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.

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.