No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Interfaces vs Clases abstractas

19/19
Recursos

Nombre del curso: Curso de Programación Orientada a Objetos con C#

Profesor: Miguel Teheran

Dirección: Oscar Barajas

Producción OPS: Lizeth Cáceres y Rocío Martínez

Creación audiovisual: Amelia Amórtegui

Edición de video: Pedro Luis Mendoza

Postproducción de audio: Juan Leon

Diseño gráfico: Amelia Amórtegui

Coordinación General: Andrés Arizmendy, Daniel Gutiérrez, Carol Baquero y Sura Cedeño

Revisión: Belman Marin

Aportes 17

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

carambolas, este curso debio salir hace un par de años atras.
genial Miguel como siempre, mil gracias.

Faltó otra característica de las clases abstractas, estas clases no se pueden instanciar, además se puede usar la mayoría de las veces como clases padre muy generales.

Ame este curso, me quedo en claro algunos conceptos que me pasaron de noche en la uni

Me he quedado muy sorprendido por el gran parecido que tiene este tema con el lenguaje de programación java, básicamente cambia la sintaxis pero la lógica es bastante parecida.

Aporte Las interfaces y las clases abstractas son dos conceptos fundamentales en la programación orientada a objetos que comparten algunas similitudes, pero también tienen diferencias clave. Aquí hay algunas diferencias importantes entre interfaces y clases abstractas en C#: 1\. \*\*Implementación de Métodos:\*\* \- \*\*Interfaces:\*\* Solo pueden contener declaraciones de métodos, propiedades, eventos y otros miembros, pero no pueden proporcionar una implementación. Las clases que implementan una interfaz deben proporcionar sus propias implementaciones para todos los miembros de la interfaz. \- \*\*Clases Abstractas:\*\* Pueden contener tanto miembros abstractos (sin implementación) como miembros concretos (con implementación). Las clases que heredan de una clase abstracta pueden optar por implementar o no los miembros abstractos. 2\. \*\*Herencia:\*\* \- \*\*Interfaces:\*\* Pueden ser implementadas por múltiples clases. Una clase puede implementar varias interfaces. \- \*\*Clases Abstractas:\*\* Pueden ser heredadas por una única clase. No permiten la herencia múltiple. 3\. \*\*Constructores:\*\* \- \*\*Interfaces:\*\* No pueden tener constructores. No se pueden instanciar. \- \*\*Clases Abstractas:\*\* Pueden tener constructores y pueden ser instanciadas, pero no directamente. Se requiere una clase derivada para proporcionar la implementación completa. 4\. \*\*Acceso a Miembros:\*\* \- \*\*Interfaces:\*\* Todos los miembros de una interfaz son públicos por defecto y no pueden tener modificadores de acceso. \- \*\*Clases Abstractas:\*\* Pueden tener miembros con diferentes modificadores de acceso (public, protected, etc.). 5\. \*\*Campos (Variables de Clase):\*\* \- \*\*Interfaces:\*\* No pueden tener campos. \- \*\*Clases Abstractas:\*\* Pueden tener campos. 6\. \*\*Palabras Clave:\*\* \- \*\*Interfaces:\*\* Se definen con la palabra clave `interface`. \- \*\*Clases Abstractas:\*\* Se definen con la palabra clave `abstract`. En general, las interfaces son útiles cuando se desea definir un contrato que varias clases pueden implementar, permitiendo así la implementación de múltiples interfaces en una sola clase. Las clases abstractas son más adecuadas cuando se quiere proporcionar una base común con alguna implementación compartida y también definir comportamientos que las clases derivadas deben implementar. La elección entre interfaces y clases abstractas depende de la estructura y los requisitos específicos de tu diseño.

Sigo e insisto,

Que buen profesor es Miguel! explica tranquilamente temas que pueden ser complejos y da esos tips que mejoran la escritura de código.

Un cursito de patrones de diseño en C# por fis!!!

Muy complacido con el curso. 5/5 ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-08-31%20a%20la%28s%29%202.28.40p.m.-8517561c-5783-48ed-84c1-177804c60d0e.jpg)
Gracias profe, mejor explicado imposible.
```c# ISuperHeroe avenger = new SuperHeroe { Id = 2, Nombre = "Black Widow", IdentidadSecreta = "Natasha Romanoff" }; Console.WriteLine(avenger.GetSuperHeroe()); ````El metodo GetSuperHeroe() puede ser llamado desde el program, y esto es posible ya que avenger.GetSuperHeroe()`: Llama al método `GetSuperHeroe()` del objeto `avenger`. Aquí, `avenger` es tratado como un `ISuperHeroe`, lo que significa que puede usar métodos definidos en `ISuperHeroe`
No me queda muy claro la diferencia entre interfaz y clase abstracta desde que le metieron la nueva característica a las interfaces (método por defecto en interfaz), dado que esto hace que estos dos tipos se parezcan mucho, aunque entiendo que aún se puede diferenciar en el tema de múltiples implementaciones y otras cositas más.

Wow, realmente me ha gusta el curso, me ha servido mucho, es hora de seguir con los demás cursos, he aprendido mucho, muchas Gracias Platzi

LLegaron un par de años tarde...

Espero poderme explicar:

Imaginen que tienen dos reinos de animales de acuerdo a su forma de nacimiento: viviparos o ovíparos.

Entonces en este caso creamos la clase Animal con el método formaDeNacimiento. Las clases AnimalViviparo y AnimalOviparo heredan de la clase Animal esta característica una y solo una vez y modifican el método formaDeNacimiento a su conveniencia para decir que un animal nace por medio de huevos o desde el vientre de la madre, pero nótese que tu ya sabes que sea cual sea el animal tu debes clasificarlo en uno de los dos tipos, entonces, antes que ser un contrato (como una interfaz por ejemplo), es una base que te ayuda a construir clases.

Ahora, ya sea un animal vivíparo o ovíparo, ambos deben moverse y la forma de movimiento de cada animal es distinto, por lo tanto que debes modificar el comportamiento del método varias veces, dependiendo el animal que hablas. Para esto es lo que sirven las interfaces, para usarlo varias veces y dependiendo del uso que le des.

Dicho esto, la interfaz puedes heredarla varias veces en el código y las clases que tengas en función de las necesidades que necesites (he ahí que se dice que es un contrato, pero he ahí que tu le pongas la letra en cada clase que definas en función del contexto que estás trabajando) pero la clase abtracta solamente puedes heredarla una vez y es igual un contrato, pero que ya viene con letras y te dice que debe tener tu clase para que funcione y herede de su inmediato superior.

Espero no me hice bolas.

Excelente explicacion del curso !!!

buen curso…

NO me salen los recursos, alguien tiene el link para git?