2012-02-03 9 views

Respuesta

14

Una clase abstracta generalmente tiene uno o más métodos abstractos. Entonces sí, puede tener algún método implementado. El objetivo es obligar al usuario a implementar estos métodos para que un objeto funcione. A veces, las clases abstractas se utilizan para proporcionar una implementación 'base' de algunas interfaces, dejando que el usuario final especifique solo los métodos clave. También puede tener una clase abstracta sin ningún método abstracto: en este caso usted afirma que debe derivar de esa clase para poder usarla.

+5

Es posible crear clases abstractas sin métodos abstractos, simplemente marcando la clase como abstracta ... –

+2

clase abstracta significa que debe ser heredada para ser instanciada. No implica que deba tener métodos abstractos como señaló Kirill Polishchuk. – ken2k

+0

@KirillPolishchuk Gracias Krill, nunca lo noté, corregí la respuesta. –

1

Sí. No se puede crear una instancia de la clase abstract (debe instanciar una clase que hereda de su clase abstracta), pero puede contener implementaciones.

1

Perfectamente bien para implementar algunos métodos y dejar otros abstractos.

Si todos los métodos tienen que ser abstractos, también puede utilizar una interfaz para ello.

0

está bien y permitido, un abstract class tiene al menos un miembro (método/propiedad) no implementado por lo que no se puede crear una instancia.

interface también se llama pure abstract class, lo que significa que es 100% abstracto, por lo que no le permite especificar ninguna implementación.

tenga en cuenta que hay muchos artículos y opiniones acerca de nunca derivar una clase concreta de otra clase concreta, sino solo de abstractas ... al menos esta fue la tendencia en C++ hasta hace algunos años, luego me mudé al lado de C#, comenzó a trabajar más y no tuvo tiempo de seguir leyendo esos lindos artículos ... :)

+3

Puede tener una clase abstracta sin ningún miembro abstracto en C# –

6

Es común tener alguna implementación en clases abstractas.

Si no hay ninguna implementación, considere usar una interfaz en lugar de una clase abstracta.

Cuestiones relacionadas