Clases abstractas e interfaces Similitudes: (1) puede ser heredado (2) no puede ser instanciada (3) puede contener declaraciones de método (4) La clase derivada debe implementar el método no implementado Categoría: (1) Las clases base abstractas pueden definir campos, propiedades e implementaciones de métodos. Las interfaces solo pueden definir atributos, indexadores, eventos y declaraciones de métodos, y no pueden contener campos. (2) Una clase abstracta es una clase incompleta que necesita un refinamiento adicional, mientras que una interfaz es una norma conductual. Las interfaces personalizadas de Microsoft siempre vienen con un campo capaz para demostrar que son expresiones del "Puedo hacerlo..." ” (3) Las interfaces pueden implementarse varias veces, y las clases abstractas solo pueden ser heredadas por una sola persona (4) Las clases abstractas están más definidas entre una serie de clases estrechamente relacionadas, mientras que la mayoría de las interfaces son clases vagamente relacionadas que implementan una función determinada (5) Las clases abstractas son conceptos abstraídos de una serie de objetos relacionados, por lo que reflejan la común internidad de las cosas; Una interfaz es una convención funcional definida para satisfacer llamadas externas, por lo que refleja las características externas de las cosas (6) La interfaz básicamente no tiene características específicas de herencia, solo promete métodos que pueden llamarse (7) Las interfaces pueden usarse para soportar callbacks, pero la herencia no tiene esta característica (8) Los métodos específicos implementados por las clases abstractas son virtuales por defecto, pero los métodos de interfaz en la clase que implementan la interfaz no son virtuales por defecto, por supuesto, también puedes declararlos virtuales (9) Si una clase abstracta implementa una interfaz, el método en la interfaz puede mapearse a la clase abstracta como un método abstracto sin necesidad de implementarlo, y el método en la interfaz puede implementarse en una subclase de la clase abstracta
|