En programación, la herencia y el polimorfismo son dos conceptos fundamentales orientados a objetos. En Dart, estos conceptos se implementan de manera muy efectiva e intuitiva. Empecemos por la herencia.

Herencia

La herencia es un mecanismo que permite que una clase herede las propiedades y métodos de otra clase. La clase de la que hereda se llama subclase o clase derivada, y la clase de la que hereda se llama superclase o clase base.

En Dart, la herencia se implementa utilizando la palabra clave 'extends'. Por ejemplo, considere la siguiente clase base 'Animal':

clase Animal {
  comer vacío() {
    print('Comiendo...');
  }
}

Podemos crear una subclase 'Perro' que hereda de 'Animal' de la siguiente manera:

clase Perro extiende Animal {
  corteza vacía() {
    print('Ladrando...');
  }
}

Ahora, un objeto de la clase 'Dog' puede acceder tanto al método 'eat()' de la clase base 'Animal' como al método 'bark()' de la clase misma:

var d = Perro();
comer(); // Salida: Comiendo...
d.ladrar(); // Salida: Ladrando...

Esto es herencia. La clase 'Perro' hereda todas las propiedades y métodos de la clase 'Animal' y también puede agregar sus propios métodos y propiedades.

Polimorfismo

El polimorfismo es un concepto que permite que un objeto sea tratado como una instancia de una clase base, aunque en realidad sea una instancia de una subclase. Esto es muy útil cuando quieres escribir código que pueda manejar objetos de muchas clases diferentes, siempre y cuando todas esas clases sean subclases de una determinada clase base.

En Dart, el polimorfismo se implementa mediante el uso de variables de tipo base para hacer referencia a objetos de subclase. Por ejemplo, considere la siguiente clase base 'Forma' y dos subclases 'Círculo' y 'Cuadrado':

clase abstracta Forma {
  sorteo nulo();
}

clase Círculo extiende Forma {
  sorteo vacío() {
    print('Dibujando un círculo...');
  }
}

clase Cuadrado extiende Forma {
  sorteo vacío() {
    print('Dibujando un cuadrado...');
  }
}

Ahora, podemos crear una función que acepte un objeto de tipo 'Forma' y llame al método 'draw()' en él:

void drawShape(Forma de forma) {
  forma.draw();
}

Luego podemos pasar un objeto 'Círculo' o 'Cuadrado' a esta función, y se llamará al método 'draw()' apropiado:

var c = Círculo();
dibujarForma(c); // Salida: Dibujando un círculo...

var s = Cuadrado();
dibujarForma(s); // Salida: Dibujando un cuadrado...

Esto es polimorfismo. La función 'drawShape()' puede manejar cualquier objeto que sea una instancia de 'Shape' o cualquiera de sus subclases.

En resumen, la herencia y el polimorfismo son dos conceptos muy poderosos en la programación orientada a objetos que le permiten escribir código más reutilizable y flexible. En Dart, estos conceptos se implementan de una manera muy intuitiva y fácil de usar, lo que convierte a Dart en una excelente opción para el desarrollo de aplicaciones.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de los siguientes conceptos de programación orientada a objetos permite que un objeto sea tratado como una instancia de una clase base, aunque en realidad sea una instancia de una subclase?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Conceptos avanzados de dardos: mixins

Siguiente página del libro electrónico gratuito:

41Conceptos avanzados de dardos: mixins

3 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.