我想了解接口中的多重繼承。我從以下網站借來的代碼並將其轉化到VB.NET:http://www.oodesign.com/interface-segregation-principle.htmlVB.NET - 多態和接口
Public Interface IWorker
Inherits IFeedable, IWorkable
End Interface
Public Interface IWorkable
Sub work()
End Interface
Public Interface IFeedable
Sub eat()
End Interface
Public Class Worker
Implements IWorkable, IFeedable
Public Sub eat() Implements IFeedable.eat
End Sub
Public Sub work() Implements IWorkable.work
End Sub
End Class
Public Class Robot
Implements IWorkable
Public Sub work() Implements IWorkable.work
End Sub
End Class
Class Manager
Dim worker As IWorkable
Public Sub setWorker(ByVal w As IWorkable)
worker = w
End Sub
Public Sub manage()
worker.work()
End Sub
End Class
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
Dim Test As New Manager
Dim IWorkerRobot As IWorkable = New Robot
Test.setWorker(IWorkerRobot)
Catch ex As Exception
'I won't absorb the exception.
End Try
End Sub
End Class
我不明白IWorker接口的一點是什麼,現在有一個IWorkable和IFeedable接口(IWorker延伸IFeedable和IWorkable)。我意識到這與多態性有關,但我不確定。
在片段中定義IWorker沒有意義,因爲您不使用它。任意延伸機器人的定義,它也必須吃。就像一個完全不同於人類的方式,它將不得不將自己插入牆上的插座來爲其電池充電。 – 2012-07-08 14:51:22
@Hans Passant,它何時有繼承層次? – w0051977 2012-07-08 14:55:33
當你在類之間有** is-a **關係時。經理不是機器人,在你的片段中沒有證據。但是這適用於類,而不是接口。您的IWorker只是聲明一個接口,允許使用該接口的客戶端請求進食和工作。 – 2012-07-08 15:03:22