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.