Exportar (0) Imprimir
Expandir todo

Fundamentos de la herencia

La instrucción Inherits se utiliza para declarar una nueva clase, denominada clase derivada, basada en una clase existente conocida como clase base. Las clases derivadas heredan, y pueden extender, las propiedades, métodos, eventos, campos y constantes definidos en la clase base. En la siguiente sección se describen algunas de las reglas de herencia, así como los modificadores que se pueden utilizar para cambiar la forma en que las clases heredan o son heredadas:

  • De forma predeterminada, todas las clases son heredables a menos que se marquen con la palabra clave NotInheritable. Las clases pueden heredar de otras clases del proyecto o de clases en otros ensamblados a los que hace referencia el proyecto.

  • A diferencia de los lenguajes que permiten la herencia múltiple, Visual Basic sólo permite la herencia simple en las clases; es decir, las clases derivadas sólo pueden tener una clase base. Aunque no se permite la herencia múltiple en las clases, éstas pueden implementar múltiples interfaces, lo que permite lograr de manera eficaz los mismos fines.

  • Para evitar la exposición de elementos restringidos en una clase base, el tipo de acceso de una clase derivada debe ser igual o más restrictivo que el de su clase base. Por ejemplo, una clase Public no puede heredar una clase Friend o Private, y una clase Friend no puede heredar una clase Private.

Modificadores de herencia

Visual Basic presenta las siguientes instrucciones y modificadores de nivel de clase para ofrecer compatibilidad con la herencia:

  • Instrucción Inherits: especifica la clase base.

  • Modificador NotInheritable: impide que los programadores utilicen la clase como clase base.

  • Modificador MustInherit: especifica que la clase sólo se debe utilizar como clase base. Las instancias de las clases MustInherit no se pueden crear directamente; sólo se pueden crear como instancias de clase base de una clase derivada. Otros lenguajes de programación, como C++ y C#, utilizan el término clase abstracta para describir tal clase.

Reemplazar propiedades y métodos en clases derivadas

De forma predeterminada, una clase derivada hereda los métodos y propiedades de su clase base. Si una propiedad o método heredado debe comportarse de forma diferente en la clase derivada, puede ser reemplazado; es decir, puede definirse una nueva implementación del método en la clase derivada. Los siguientes modificadores se utilizan para controlar cómo se reemplazan propiedades y métodos:

  • Overridable: permite reemplazar una propiedad o un método de una clase en una clase derivada.

  • Overrides: reemplaza una propiedad o un método Overridable definido en la clase base.

  • NotOverridable: impide reemplazar una propiedad o método en una clase que hereda. Los métodos Public son NotOverridable de forma predeterminada.

  • MustOverride: requiere que una clase derivada reemplace una propiedad o un método. Cuando se utiliza la palabra clave MustOverride, la definición del método está formada simplemente por la instrucción Sub, Function o Property. No se permite ninguna otra instrucción y no hay específicamente ninguna instrucción End Sub o End Function. Los métodos MustOverride se deben declarar en las clases MustInherit.

Para obtener más información sobre los métodos de reemplazo, consulte Reemplazar propiedades y métodos.

La palabra clave MyBase

Puede utilizar la palabra clave MyBase para llamar a métodos de una clase base cuando reemplace métodos en una clase derivada. Por ejemplo, suponga que diseña una clase derivada que reemplaza un método heredado de la clase base. El método reemplazado puede llamar al método de la clase base y modificar el valor devuelto como se muestra en el fragmento de código siguiente:

Class DerivedClass
    Inherits BaseClass
    Public Overrides Function CalculateShipping( _
        ByVal Dist As Double, _
        ByVal Rate As Double) _
        As Double
        ' Call the method in the base class and modify the return value.
        Return MyBase.CalculateShipping(Dist, Rate) * 2
    End Function
End Class

En la lista siguiente se describen las restricciones de uso de MyBase:

  • MyBase hace referencia a la clase base inmediata y a sus miembros heredados. No se puede utilizar para tener acceso a miembros Private de la clase.

  • MyBase es una palabra clave, no un objeto real. MyBase no se puede asignar a una variable, pasar a procedimientos o utilizar en una comparación Is.

  • No es necesario definir el método al que califica MyBase en la clase base inmediata; puede definirse en una clase base heredada indirectamente. Para compilar correctamente una referencia calificada mediante MyBase, alguna clase base debe contener un método correspondiente al nombre y el tipo de los parámetros que aparezcan en la llamada.

  • No puede utilizar MyBase para llamar a métodos de clase base con el modificador MustOverride.

  • No se puede utilizar MyBase para calificarse a sí misma. Por tanto, el siguiente código no es válido:

    MyBase.MyBase.BtnOK_Click()

  • No se puede utilizar MyBase en módulos.

  • No se puede utilizar MyBase para tener acceso a miembros de clase base marcados como Friend si la clase base está en un ensamblado diferente.

La palabra clave MyClass

La palabra clave MyClass permite llamar a un método Overridable implementado en la clase y asegurarse de que se llama a la implementación del método en esta clase y no a la de un método reemplazado en una clase derivada.

  • MyClass es una palabra clave, no un objeto real. MyClass no se puede asignar a una variable, pasar a procedimientos o utilizar en una comparación Is.

  • MyClass hace referencia a la clase base inmediata y a sus miembros heredados.

  • MyClass puede utilizarse como calificador de miembros Shared.

  • MyClass no se puede utilizar en módulos estándar.

  • MyClass puede utilizarse para calificar un método que está definido en un clase base y que no tiene ninguna implementación del método proporcionado en esa clase. Este tipo de referencia tiene el mismo significado que MyBase.Method.

Vea también

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft