MustOverride,MustInherit ?

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    Hi
    MustOverride steht dafür, dass ableitende Klassen diese Funktion überschreiben müssen. Das ist dann gekoppelt mit MustInherit, da das dafür sorgt, dass man eine Klasse von der anderen Klasse ableiten muss, um diese zu verwenden. Man nennt eine Klasse mit MustInherit und einen Member mit MustOverride auch abstrakt.

    Hier beispielsweise ein praktisches Anwendungsbeispiel. Die Klasse PixelBuffer erlaubt einen dynamischen Zugriff auf einen Puffer, der Argb-Farben enthält. GetPixel gibt dann die Argb-Farbe zurück (die dann mit z.B. Color.FromArgb für GDI ausgewertet werden kann). Wenn du jetzt verschiedene Puffer implementierst, wie einen HSV-Farbpuffer oder einen Puffer mit anderer Endianness oder auch einfach einen Puffer, der Argb-Werte enthält, machst du das am besten über Vererbung, da damit die Effizienz deiner Software stark gesteigert wird. z.B. ArgbColorBuffer gibt dir den Pixel am Punkt x, y auf dem Surface zurück (ohne Fehlerbehandlung)

    VB.NET-Quellcode

    1. Public Class PixelBuffer
    2. Public MustOverride Function GetPixel(ByVal x As Integer, ByVal y As Integer) As Integer
    3. End Class
    4. Public Class ArgbColorBuffer
    5. Inherits PixelBuffer
    6. Private intBuffer() As Integer
    7. Private szBufferSize As Integer
    8. Public Sub New(ByVal bufferSize As Size)
    9. intBuffer = DirectCast(Array.CreateInstance(GetType(Integer), Math.BigMul(buffersize.Width, bufferSize.Height)), Integer())
    10. szBufferSize = bufferSize
    11. End Sub
    12. Public Overrides Function GetPixel(ByVal x As Integer, ByVal y As Integer) As Integer
    13. Return intBuffer(x + y * szBufferSize.Width)
    14. End Function
    15. End Class


    Gruß
    ~blaze~