我可以使用界面来完成此任务吗?

时间:2014-07-30 18:28:19

标签: vb.net oop inheritance interface

您好StackOverflow社区,

我有一个特定的情况处理VB.Net中的接口。

特别是,我有一个应该能够为接口拥有的每个子类运行的函数。这是一个简单的例子:

Public Interface Book
   Function TurnPage() As Page
   Sub OpenBook()
   Sub CloseBook()
End Interface

Public Class Reader
   Public Sub Reading()
      OpenBook()
      TurnPage()
      CloseBook()
   End Sub
End Class

Public Class Magazine
   Implements Book

   Public Function TurnPage() As Page
     Implements Book.TurnPage
     ' Code implementation for TurnPage
   End Function

   Public Sub OpenBook()
     Implements Book.TurnPage
     ' Code implementation for OpenBook
   End Sub

   Public Sub CloseBook()
     Implements Book.TurnPage
     ' Code implementation for CloseBook
   End Sub
End Class

Public Class Novel
   Implements Book

   Public Function TurnPage() As Page
     Implements Book.TurnPage
     ' Code implementation for TurnPage
   End Function

   Public Sub OpenBook()
     Implements Book.TurnPage
     ' Code implementation for OpenBook
   End Sub

   Public Sub CloseBook()
     Implements Book.TurnPage
     ' Code implementation for CloseBook
   End Sub
End Class

如何在阅读器(阅读)中为该特定界面(书籍)的所有子类(杂志和小说)使用Sub?

1 个答案:

答案 0 :(得分:2)

更改Reader以接受Book

Public Class Reader
   Public BookToRead as Book  
   Public Sub New(ABook As Book)
      Me.BookToRead = ABook
   End Sub

   Public Sub Reading()
      BookToRead.OpenBook()
      BookToRead.TurnPage()
      BookToRead.CloseBook()
   End Sub
End Class

然后当你需要读者阅读一本书时:

Dim ThreeMusketeers As New Novel()
Dim reader1 as New Reader(ThreeMusketeers) // Novel
reader1.Reading()

Dim NewYorkTimes As New Magazine()
Dim reader2 as New Reader(NewYorkTimes)
reader2.Reading()