2009-11-06 2 views
6

누군가 MustOverride가하는 것이 아니라 왜 그것을 사용하는지 설명 할 수 있습니까? 그 기능을 폭로하는 것입니까?누군가가 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 .. // 

2 등석 (룸)

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?

여기 내 무지를 용서하십시오.

답변

10

기본 클래스에 공통 기능을 제공 할 수 있도록하지만 파생 클래스가 특정 기능 비트를 직접 구현하도록합니다.

나는 추상적 인 클래스보다는 인터페이스를 사용할 것을 제안하지만 다른 경우에는 의미가있다. System.IO.Stream과 같이 System.Text.Encoding은 추상 클래스의 좋은 예입니다.

+0

감사합니다. Tony, 기본적으로 기본 클래스의 함수 (공통 기능)를 노출하여 밀어냅니다. 그것이 내가 최소한 어떻게 이해하고 있었는지와 그 경우 인 것 같습니다. 많은 감사합니다. 공장 정보에 감사드립니다. 나는 인터페이스에 익숙하지 않지만 멀리 나가서 내가 알아낼 수있는 것을보기 위해 독서를 할 것이다. 다시 한 번 감사드립니다. – dooburt

1

MustOverride는 속성 또는 프로 시저가이 클래스에 구현되어 있지 않으며 사용하기 전에 파생 클래스에서 재정의해야한다고 지정합니다.

4

기본 클래스에 기본 구현이있는 메소드의 경우 Overrideable을 사용합니다.
(현명한) 기본 구현이 가능하지 않은 경우 Mustoverride을 사용하십시오.

3

나는 VB.NET 전문가는 아니지만 반드시 C#을 수행했습니다. C#에서는 이에 상응하는 추상 키워드입니다. RoomFactory 클래스에서 파생 된 모든 클래스에서 추상으로 정의한 일부 비헤이비어를 구현하려는 경우에 사용해야합니다.

예를 들어, RoomFactory 클래스에서 상속 된 모든 Room 객체가 크기를 반환하도록하려는 경우를 가정 해 보겠습니다. Roomfactory에서 ReturnSize 함수를 작성하고이 함수를 상속받은 모든 유형의 방은이 함수를 구현해야합니다.

인터페이스를 사용하여 동일한 작업을 수행 할 수 있습니다. 그러나 MustInherit 클래스를 사용하면 RoomFactory에 모든 기본 기능을 추가 할 수 있습니다.

희망이 도움이됩니다.

관련 문제