modificadores modificador metodo constructores acceso dart

dart - modificador - private final java



¿Qué hace el modificador final en Dart? (1)

El dardo tiene un concepto de final . La mayoría de los lenguajes dinámicos no tienen este concepto.

¿Qué es final y para qué lo uso?


final variables final pueden contener cualquier valor, pero una vez asignadas, una variable final no se puede reasignar a ningún otro valor.

Por ejemplo:

main() { final msg = ''hello''; msg = ''not allowed''; // **ERROR**, program won''t compile }

final también se puede utilizar para variables de instancia en un objeto. Se debe establecer un campo final de una clase antes de ejecutar el cuerpo del constructor. Un campo final no tendrá un establecedor implícito creado para él, porque no puede establecer un nuevo valor en una variable final.

class Point { final num x, y; Point(this.x, this.y); } main() { var p = new Point(1, 1); print(p.x); // 1 p.x = 2; // WARNING, no such method }

Es importante darse cuenta de que el final afecta a la variable, pero no al objeto señalado por la variable. Es decir, final no hace inmutable el objeto de la variable.

Por ejemplo:

class Address { String city; String state; Address(this.city, this.state); } main() { final address = new Address("anytown", "hi"); address.city = ''waikiki''; print(address.city); // waikiki }

En el ejemplo anterior, la variable de address está marcada como final, por lo que siempre apuntará al objeto creado por el new Address("anytown", "hi") . Sin embargo, el objeto en sí tiene un estado mutable, por lo que es perfectamente válido cambiar la ciudad. Lo único que evita el final es reasignar la variable de address .