‫En esta lección, aprenderá la diferencia fundamental entre las clases de activos y las interfaces al diseñar
‫aplicaciones.
‫Es esencial saber cuándo usar una clase abstracta y cuándo usar una interfaz y cuándo no usar ninguna de
‫ellas.
‫Las clases e interfaces abstractas parecen similares en algunos aspectos, pero existen diferencias clave que determinarán cuál
‫es la mejor opción para lo que está tratando de lograr.
‫Comprender la diferencia entre una clase abstracta y una interfaz es muy
‫importante, por lo que podemos diseñar aplicaciones extensibles y poco acopladas para que podamos modificarlas y
‫cambiarlas fácilmente sin romperlo todo.
‫Discutiremos esas diferencias y cómo decidir cuándo usar cuál en este video.
‫Pero antes de hacer eso, primero, refresquemos nuestra memoria sobre clases e interfaces abstractas.
‫Entonces, primero, las clases abstractas y la clase abstracta son una clase incompleta o una clase que no se puede instanciar, lo que significa que no
‫podemos crear objetos a partir de ella.
‫El propósito de una clase abstracta es proporcionar un modelo para las clases derivadas y establecer algunas reglas como
‫lo que deben implementar las clases derivadas.
‫Pero, ¿por qué necesitaríamos que una clase se marque como una clase abstracta para empezar?
‫¿Qué pasa con las clases regulares?
‫Imagine que tenemos una motocicleta de clase y un automóvil de clase y comparten algunas funciones para reducir la redundancia
‫de código.
‫Creamos una clase base llamada Vehículo para evitar la creación de instancias de tipo vehículo y para hacer cumplir todos los métodos
‫para implementar su versión de los métodos del vehículo.
‫Tenemos que marcarlo como una clase abstracta.
‫Podemos aprovechar las clases abstractas para diseñar componentes y especificar algún nivel de funcionalidad común
‫que deben implementar las clases adecuadas.
‫Así que hagamos que este vehículo sea abstracto y estará bien.
‫Ahora veamos las interfaces una vez más.
‫Entonces, una interfaz es un contrato y solo puede contener declaraciones de métodos.
‫No puede contener definiciones de métodos.
‫Definen una habilidad que tiene una clase.
‫Imaginemos que tenemos tres clases.
‫Entonces tenemos la clase, bicicleta, moto y coche.
‫Y luego queremos asegurarnos de que todas estas clases hereden de este vehículo de clase.
‫Y si desea agregar la funcionalidad de conducción autónoma a nuestro automóvil, por ejemplo, y queremos crear
‫otras clases, por ejemplo, que podrían crear algo como un avión, no tiene sentido agregar la funcionalidad de
‫conducción autónoma a el vehículo de mejor clase porque no todas nuestras subclases tendrán esta
‫característica.
‫Sería más conveniente agregarlo en forma de una interfaz llamada IA autónoma.
‫Entonces estas clases que implementan esta interfaz pueden proporcionar la lógica para lograrlo.
‫Ahora, hablemos de las similitudes entre interfaces y clases abstractas, tanto las interfaces como las
‫clases abstractas pueden instanciarse.
‫Significa que no podemos crear objetos a partir de ellos.
‫Pero ambos admiten polimorfismo, lo que significa que podemos almacenar un objeto de tipo cad en una variable de
‫tipo, clase abstracta animal.
‫Lo mismo ocurre con las interfaces donde podemos almacenar cualquier colección como una lista o una pila en una variable
‫de Tipo II enumerable.
‫Así que ahora veamos las diferencias clave.
‫Una clase abstracta está diseñada para ser heredada por subclases que implementan o anulan sus métodos.
‫En otras palabras, las clases abstractas se implementan parcialmente o no se implementan en absoluto.
‫Por otro lado, las interfaces no se implementan en absoluto.
‫Entonces una clase abstracta no puede tener un constructor opuesto a eso.
‫Las clases abstractas pueden tener constructores y campos, así como definiciones de métodos, y la
‫implementación será responsabilidad de la clase que implementó la interfaz.
‫Por otro lado, una clase abstracta puede contener método, definiciones y campos y las interfaces no
‫tienen constructores, como mencionamos, tampoco pueden tener campos.
‫Así que ahora las clases pueden implementar muchas interfaces, lo cual es una forma de lograr algún tipo de herencia múltiple.
‫Dado que la tienda de té es un idioma de herencia única y no lo permite de forma predeterminada.
‫Aún así, una clase solo puede heredar extender una clase.
‫Entonces, si una clase implementó una interfaz, debe implementar todos sus miembros, como propiedades, métodos,
‫etc., por otro lado, cuando una clase extiende una clase abstracta, debe
‫implementar sus miembros abstractos solo para que conozcan la parte no implementada. de la clase abstracta.
‫Veamos una analogía aquí.
‫Imagínese un editorial de instructor agudo en el que el instructor no puede lograr nada a menos que sea un experto
‫en un tema o ella sea experta en un tema porque no podemos tener instancias de clases abstractas.
‫Por lo tanto, un instructor debería convertirse en un experto en un tema para enseñarlo.
‫Entonces, el instructor se convirtió en un experto en Do sostenido y ahora él o ella puede enseñar estos nitidos en algún momento, el
‫instructor de Do sostenido tuvo que editar videos, aunque no todos los instructores necesitan hacer lo mismo.
‫Así que implementamos la interfaz I editor de video para que esto funcione.
‫Por lo tanto, no todos los instructores deben poder editar, pero los que implementen este editor de
‫video deberán hacerlo.
‫Está bien.
‫Uno, si elige la herencia sobre una interfaz al diseñar la clase C shop, las bibliotecas usarán una clase
‫adicional.
‫Si tiene alguna funcionalidad que desee, debe tener subclases.
‫Por ejemplo, si tiene un conjunto de funciones, quiere que las subclases las pongan en una clase
‫abstracta.
‫La clase abstracta se usa cuando la clase derivada comparte sus propiedades centrales y el comportamiento de la clase abstracta, el
‫tipo de comportamiento que realmente define la interfaz de usuario de la clase.
‫Si desea un contrato general sobre un comportamiento o funcionalidad, las interfaces suelen ser sueltas en comparación con
‫las clases abstractas.
‫No querrá utilizar interfaces en una situación en la que esté escribiendo constantemente el mismo código para todos
‫los métodos de interfaz.
‫Usa una clase abstracta y define cada método una vez.
‫Así que un breve resumen.
‫Cuando hablamos de clases abstractas, definimos las características de un tipo de objeto especificando qué es
‫un objeto.
‫Cuando hablamos de una interfaz y definimos las capacidades que prometimos proporcionar, estamos hablando de establecer
‫un contrato sobre lo que puede hacer el objeto.
‫Entonces, cuál es la clase abstracta del objeto, qué puede hacer el objeto.
‫E interfaz.
‫Muy bien, espero que haya disfrutado y comprendido el resumen y esta descripción general de los
‫dos tipos diferentes de enfoques.
‫Y ahora sigamos adelante y usemos esos conceptos y diferentes ejemplos a lo largo de las próximas conferencias y durante el
‫resto del curso.