有人可以解释MustOverride吗?

doo*_*urt 6 .net vb.net asp.net oop

有人可以解释MustOverride的功能,但为什么要使用呢?它是否公开这个功能?

我有两个班,第一个(RoomFactory);

Public MustInherit Class RoomFactory : Inherits baseFactory
Private _roomid As Integer = 0
Private _roomname as String = ""

Public Sub New()

End Sub

Public Sub New(ByVal roomid As Integer, ByVal roomname As String)
    Me.RoomId = roomid
    Me.RoomName = roomname
End Sub

Public MustOverride Function CreateRoom(ByVal roomdetails As RoomFactory) As Integer
Public MustOverride Function IsRoomAvailable(ByVal roomdetails as RoomFactory) As Boolean
// .. properties removed for brevity .. //
Run Code Online (Sandbox Code Playgroud)

二等(室)

Public Class Room : Inherits RoomFactory
    Public Function CreateRoom(ByVal roomdetails As RoomFactory) As Integer
        Return 0
    End Function
    Public Function IsRoomAvailable(ByVal roomdetails As RoomFactory) As Boolean
        Return False
    End Function
End Class
Run Code Online (Sandbox Code Playgroud)

首先,我认为这是正确的,但是对于其他方面的任何建议 - 性能等.但我想主要的问题是 - 为什么要使用MustOverride?

请原谅我的无知.

Jon*_*eet 10

这样您就可以在基类中提供通用功能,但强制派生类本身可以实现特定的功能.

在你的工厂情况下,我建议使用一个接口而不是一个抽象类,但在其他情况下,它是有道理的.System.Text.Encoding是一个抽象类的一个很好的例子System.IO.Stream.


Hen*_*man 5

您将使用Overrideable在基类中具有默认实现的方法。
当不可能有(合理的)默认实现时,请使用Mustoverride.