• Saltar a la navegación principal
  • Saltar al contenido principal

CARLOSZR.COM

Mi blog personal, CarlosZR

  • Blog
  • Contacto
  • Curso de SwiftUI por CarlosZR

Curso de Flutter / 11/08/2021

Herencia en Dart. Extends en Dart, herencia de clases

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.

Clase padre Usuario

Recuerda que con el get hemos creado una propiedad llamada nombreCompleto.

Ahora creamos la clase hijo Admin que hereda de la clase padre Usuario.

extends en dart, herencia en Dart
Herencia en Dart, extends en Dart

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.

instancia de clase hijo en Dart
Campo de clase que hereda

¿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.

instancia de clase hijo
Instancia de clase hijo

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.

Sobreescribir método de la clase padre
Sobreescribir 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.

paquete meta
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.

anotación @mustaCallSuper del paquete meta en Dart
Anotación @mustCallSuper actuando

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.

is y is! en Dart
is y is not para verificar si es del tipo Admin

El resultado es:

Resultado de is y is!

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.

verificar si es un tipo de clase con is en dart
Verificar de qué tipo es

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.

Publicado en: Curso de Flutter

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carlos ZR

  • Sígueme en Twitter
  • Política de Cookies
  • Política de Privacidad
  • Aviso Legal

Utilizamos cookies para ofrecerte la mejor experiencia en nuestra web.

Puedes aprender más sobre qué cookies utilizamos o desactivarlas en los ajustes.

CARLOSZR.COM
Powered by  GDPR Cookie Compliance
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.