Dart tiene herencia única. No existe la herencia múltiple en Dart.
Seguramente es lo primero que tenemos que decir sobre la herencia en Dart. Pero no lo único, vamos a ver las peculiaridades de la herencia en Dart. Vamos a aprender cómo utilizarla.
Una cosa que no se te debe olvidar nunca es que cuando extendemos un objeto de otro, al crear una instancia del objeto que hereda en realidad estamos instanciando un objeto del objeto padre. Me explico. Para que me entiendas, tenemos que rellenar los campos del objeto padre. Por lo tanto, en el constructor del objeto hijo esto se debe indicar de alguna manera, claro. Uff, qué lio, ¿verdad? Veámoslo con un ejemplo, que no es difícil.
Vamos a crear una clase Usuario. Esta va a ser nuestra clase padre.

Recuerda que con el get hemos creado una propiedad llamada nombreCompleto.
Ahora creamos la clase hijo Admin que hereda de la clase padre Usuario.

Como vemos, se le pasa a la clase padre el nombre y el apellido, esto lo hacemos detrás de : .
: super(nombre, apellido);
Le vamos a añadir un campo que es propio de Admin.

¿Ves ahora mejor que sólo pasamos a super (la clase padre) los campos de que tiene la clase padre?
Creamos una instancia de Admin.

Entonces, pues evidentemente si sobreescribimos en la clase hijo la propiedad nombreCompleto pues se llama a ese método sobreescrito y si no lo sobreescribimos pues se llama al método de la clase padre. Esto es obvio.
Ahora sobreescribimos el método signOut. Es importante no borrar la llamada al método de la clase padre (super.signOut). Si no obtendremos errores porque en realidad no se está llamando al método de la clase padre.

Si borramos super.signOut(); puede que tengamos problemas y no demos con la solución. Para ello podemos instalar el paquete meta.

Ahora podemos usar la anotación @mustCallSuper, que nos ayuda a recordar la llamada al método de la clase padre desde el método de la clase hijo sobreescrito.

Cambiar clase hijo a clase padre
También podemos hacer un casting de la clase hijo a la clsae padre en Dart. es muy sencillo. Ya no tendremos acceso a las propiedades de la clase hijo, claro. Sin embargo, al llamar al get se ejecuta el get de la clase hijo.

El resultado es:

Entonces, teniendo esto en cuenta, podemos hacer algo para acceder a los campos de Admin. Se trata de verificar si es Admin, entonces acceder a los campos de Admin, jejeje.

Aprender más
Si quieres aprender a crear Apps con Dart y Flutter puedes:
- Suscribirte a 🟢🟢🟢👉 mi canal de Youtube.
- Ir a mi página de Curso de Dart.
Deja una respuesta