我有一個複製函數,我想在子類中重寫以返回子類的類型。這裏是我的接口:如何獲得一個基類方法的返回類型是子類的類型?
Public Interface IBase(Of T)
Function Copy() As T
End Interface
Public Interface ICar
Inherits IBase(Of ICar)
End Interface
Public Interface IToyota
Inherits ICar
End Interface
這裏是我的課程。正如你所看到的,當汽車覆蓋複製它返回ICar這是我想要的。但是,當豐田覆蓋複製它也想要返回ICar而不是IToyota。我如何編寫它以返回IToyota?
Public MustInherit Class Base(Of T)
Implements IBase(Of T)
Protected MustOverride Function Copy() As T Implements IBase(Of T).Copy
End Class
Public Class Car
Inherits Base(Of ICar)
Implements ICar
Protected Overrides Function Copy() As ICar
Return Nothing //'TODO: Implement Copy
End Function
End Class
Public Class Toyota
Inherits Car
Implements IToyota
Protected Overrides Function Copy() As IToyota Implements IToyota.Copy
//'I want this to return IToyota, but gives me a compile error
End Function
End Class