Domitienda. Hosting ASP .NET 3.5 / SQL SERVER 2005
  buscar 
novedades
Recibe las ultimas noticias y los mejores articulos en tu email
Secciones
 • .NET Framework
 • ADO .NET
 • Ajax
 • Asp .NET
 • Biztalk
 • C#
 • Commerce Server
 • Exchange
 • IIS
 • Metodologías
 • J#
 • Office
 • Reporting Services
 • Seguridad
 • SEO
 • Servicios Web
 • Sharepoint
 • Silverlight
 • SQL Server
 • Visual Basic .NET
 • Visual C++ .NET
 • Visual Studio
 • WCF
 • Windows
 • Workflow Foundation
 • WPF
 • XAML
 • XML
 • Dynamics
 • Noticias
 • Articulos
 • Tutoriales
 • Eventos
 • Cursos
 • Ofertas Empleo
 • RSS
Contacto
¿Quieres saber quien es el creador de Clikear?

Tutorial C#

Clases abstractas

 

Una clase abstracta es aquella que forzosamente se ha de derivar si se desea que se puedan crear objetos de la misma o acceder a sus miembros estáticos (esto último se verá más adelante en este mismo tema) Para definir una clase abstracta se antepone abstract a su definición,  como se muestra en el siguiente ejemplo:

 

            public abstract class A

            {
                        public abstract void F();

            }

            abstract public class B: A

            {
                        public void G() {}

            }

            class C: B

            {
                        public override void F()

                        {}
            }

Las clases A y B del ejemplo son abstractas, y como puede verse es posible combinar en cualquier orden el modificador abstract con modificadores de acceso.

 

La utilidad de las clases abstractas es que pueden contener métodos para los que no se dé directamente una implementación sino que se deje en manos de sus clases hijas darla. No es obligatorio que las clases abstractas contengan métodos de este tipo, pero sí lo es marcar como abstracta a toda la que tenga alguno. Estos métodos se definen precediendo su definición del modificador abstract y sustituyendo su código por un punto y coma (;), como se muestra en el método F() de la clase A del ejemplo (nótese que B también ha de definirse como abstracta porque tampoco implementa el método F() que hereda de A)

 

Obviamente, como un método abstracto no tiene código no es posible llamarlo. Hay que tener especial cuidado con esto a la hora de utilizar this para llamar a otros métodos de un mismo objeto, ya que llamar a los abstractos provoca un error al compilar.

 

Véase que todo método definido como abstracto es implícitamente virtual, pues si no sería imposible redefinirlo para darle una implementación en las clases hijas de la clase abstracta donde esté definido. Por ello es necesario incluir el modificador override a la hora de darle implementación y es redundante marcar un método como abstract y virtual a la vez (de hecho, hacerlo provoca un error al compilar)

 

Es posible marcar un método como abstract y override a la vez, lo que convertiría al método en abstracto para sus clases hijas y forzaría a que éstas lo tuviesen que reimplementar si no se quisiese que fuesen clases abstractas.

 

 

 

Principal