Saltar al contenido

¿Cuál es la diferencia entre una clase abstracta y una estática?

Solución:

static indica que la clase solo puede tener miembros estáticos y no puede crear una instancia de ella. Se utiliza para la funcionalidad sin estado (por ejemplo, un tipo que solo define métodos de extensión o métodos de utilidad). También puede declarar un miembro static en una clase no estática. Esto le permite adjuntar funcionalidad a un tipo sin tener que instanciarlo.

Aquí hay más detalles sobre el uso de clases y miembros estáticos.

abstracts definen la estructura básica y la funcionalidad compartida por todos los tipos de derivados, pero no pueden usarse por sí mismos. Piense en ellos como, supongo, un proyecto de ley y un contrato. Este es un concepto fundamental para la programación orientada a objetos.

Aquí hay más detalles sobre el uso de resúmenes.

Aquí hay un breve resumen:

  • Una clase estática solo puede contener static miembros (es solo un contenedor para métodos que no pertenecen lógicamente a una instancia de ninguna clase estándar)
  • Una clase abstracta puede contener todos los tipos habituales de miembros (estáticos, abstractos y también instancia)

La diferencia clave es que puede heredar de un abstract clase, pero no puedes heredar de una static clase. Técnicamente hablando, el tiempo de ejecución de .NET no tiene ninguna noción de static clases, por lo que el compilador de C # las compila como clases que son ambas abstract y sealed (lo que significa que no puede heredar de ellos).

Entonces, static las clases son abstract clases que también son sealed (aunque esta no es la forma habitual de ver el problema si es un programador de C #) y contiene solo static miembros (que aplica el compilador de C #).

Una clase abstracta está pensada para usarse como base de una jerarquía de herencia de clases. Una clase estática no poder ser la base de una jerarquía de herencia de clases.

Una clase estática está pensada para el estado singleton o la funcionalidad sin estado. Una clase abstracta no es adecuada para la funcionalidad de singleton porque, aunque puede contener métodos y campos estáticos como lo hace una clase estática, no puede prohibir la herencia, por lo que el uso de singleton puede ser derrotado por subclases. O, al menos, sería confuso para otros programadores, porque su definición comunicaría una intención que es diferente de su uso previsto real.

La similitud superficial entre las clases abstractas y estáticas radica únicamente en el hecho de que ninguna puede ser instanciada. Más allá de eso, son animales completamente diferentes con casos de uso completamente diferentes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *