Implementaciones de interfaz predeterminadas. ¿Cuál es la diferencia profunda y significativa ahora, entre la clase abstracta y la interfaz?

Sé que una clase abstracta es un tipo especial de clase que no se puede instanciar. Una clase abstracta solo debe subclasificarse (se hereda de). En otras palabras, solo permite que otras clases hereden de él, pero no se puede instanciar. La ventaja es que impone ciertas jerarquías para todas las subclases. En palabras simples, es un tipo de contrato que obliga a todas las subclases a llevar a cabo las mismas jerarquías o estándares.

También sé que una interfaz no es una clase. Es una entidad que se define por la palabra Interfaz. Una interfaz no tiene implementación; solo tiene la firma o, en otras palabras, solo la definición de los métodos sin el cuerpo. Como una de las similitudes con la clase Abstract, es un contrato que se utiliza para definir jerarquías para todas las subclases o define un conjunto específico de métodos y sus argumentos. La principal diferencia entre ellos es que una clase puede implementar más de una interfaz pero solo puede heredar de una clase abstracta. Como C # no admite la herencia múltiple, las interfaces se usan para implementar la herencia múltiple.

Cuando creamos una interfaz, básicamente estamos creando un conjunto de métodos sin ninguna implementación que las clases implementadas deben anular. La ventaja es que proporciona una forma para que una clase forme parte de dos clases: una de la jerarquía de herencia y otra de la interfaz.

Cuando creamos una clase abstracta, estamos creando una clase base que podría tener uno o más métodos completados, pero al menos uno o más métodos quedan incompletos y declarados abstractos. Si todos los métodos de una clase abstracta están incompletos, entonces es lo mismo que una interfaz.

PERO PERO PERO

Me di cuenta de que tendremosMétodos de interfaz predeterminados en C # 8.0

Tal vez lo pregunto porque tengo solo 1-2 años de experiencia en programación, pero ¿cuál sería la principal diferencia entre la clase abstracta y la interfaz ahora?

Sé que no podemos establecer el estado en la interfaz, ¿será solo una diferencia entre ellos?

Respuestas a la pregunta(3)

Su respuesta a la pregunta