有人可以解释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 .. //
二等(室)
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
首先,我认为这是正确的,但我希望对其他方面的任何建议 - 性能等。但我想主要的问题是 - 为什么要使用MustOverride? p>
请原谅我的无知。
答案 0 :(得分:10)
这样您就可以在基类中提供通用功能,但强制派生类本身可以实现特定的功能位。
在你的工厂情况下,我建议使用接口而不是抽象类,但在其他情况下,它是有道理的。 System.Text.Encoding
是抽象类的一个很好的例子,就像System.IO.Stream
一样。
答案 1 :(得分:4)
您可以将Overrideable
用于在基类中具有默认实现的方法
如果没有(明智的)默认实现,请使用Mustoverride
。
答案 2 :(得分:3)
我不是VB.NET专家,但肯定做过C#。在C#中,等效的是抽象关键字。它应该用于您希望从RoomFactory类派生的所有类实现您定义为抽象的某些行为的情况。
假设在您的示例中,如果您希望从RoomFactory类继承的所有Room对象都返回其大小。您可以在Roomfactory中创建一个mustoverride函数,例如ReturnSize,并且从中继承的任何类型的房间都应该实现此函数。
你可以用接口做同样的事情。但是使用这样的MustInherit类允许您在RoomFactory中添加一些默认行为,这对所有房间都是通用的。
希望这有帮助。
答案 3 :(得分:1)
MustOverride指定在此类中未实现属性或过程,并且必须在派生类中重写它才能使用它。