介面可以有一個類,但我不明白如何實作這樣的介面。我在下面舉一個例子:
我寫了下面沒有任何介面的簡單代碼:
Imports System
Module Program
Sub Main()
Dim n As New name("Mounisha", "Ghosh")
Dim student As New Student(n, 14)
Console.WriteLine("First Name: {0}", student.studentName.firstName)
Console.WriteLine("Last Name: {0}", student.studentName.lastName)
Console.WriteLine("Age: {0}", student.age)
Console.ReadLine()
End Sub
End Module
Class name
Public Property firstName As String
Public Property lastName As String
Sub New(ByVal f As String, ByVal l As String)
firstName = f
lastName = l
End Sub
End Class
Class Student
Private nameValue As name
Public ReadOnly Property studentName() As name
Get
Return nameValue
End Get
End Property
Public Property age As Integer
Sub New(ByVal n As name, ByVal a As Integer)
nameValue = n
age = a
End Sub
End Class
然后我嘗試通過將類name放在一個介面中并在類學生中實作它來重新組織。但是我無法構建我的代碼。我在下面給出了我試圖構建的代碼的總體思路:
Imports System
Interface IClass
Class name
Public Property firstName As String
Public Property lastName As String
Sub New(ByVal f As String, ByVal l As String)
firstName = f
lastName = l
End Sub
End Class
End Interface
Module Program
Sub Main()
'How to create instances and pass values to constructors?
End Sub
End Module
Class Student : Implements IClass
'The idea is to create a readonly property of type "name"
'But not able to use the Interface to do the same
Public Property age As Integer
End Class
主要思想是了解如何實作帶有類的介面。請幫忙。
我想強調的另一點是在name我撰寫的類的建構式中End Sub。現在我們不能在介面中使用 end sub 陳述句 - 那么為什么我沒有收到錯誤訊息?還要做這些陳述句,firstName = f而lastName = l不是表示應該被編譯器標記為錯誤的實作 - 但沒有得到任何錯誤。對此有何解釋?
uj5u.com熱心網友回復:
您所做的只是向介面添加一個嵌套類。這不被視為實作類必須實作的東西,而只是通過該介面可用的類。使用您的結構,為了要求Student實作只讀名稱屬性,您必須將該屬性添加到介面。
Public Interface IClass
ReadOnly Property Fullname As Name
Class Name
Public Property FirstName As String
Public Property LastName As String
Sub New(firstName As String, lastName As String)
Me.FirstName = firstName
Me.LastName = lastName
End Sub
End Class
End Interface
你的Student班級看起來像
Public Class Student : Implements IClass
'Because Name is nested within IClass, it's referenced by IClass.Name
Public ReadOnly Property Fullname As IClass.Name Implements IClass.Fullname
Public Property Age As Integer
Public Sub New(name As IClass.Name, age As Integer)
Fullname = name
Me.Age = age
End Sub
End Class
創建一個學生將是
Dim name = New IClass.Name("Mounisha", "Ghosh") 'again we access name via the interface
Dim student = New Student(name, 14)
通常您不會向介面添加嵌套類,而是執行類似的操作
Module Program
Sub Main()
Dim studuent = New Student(New Name("Mounisha", "Ghosh"), 14)
End Sub
End Module
Interface IClass
ReadOnly Property Fullname As Name
End Interface
Public Class Name
Public Property FirstName As String
Public Property LastName As String
Sub New(firstName As String, lastName As String)
Me.FirstName = firstName
Me.LastName = lastName
End Sub
End Class
Class Student : Implements IClass
Public ReadOnly Property Fullname As Name Implements IClass.Fullname
Public Property Age As Integer
Public Sub New(name As Name, age As Integer)
Fullname = name
Me.Age = age
End Sub
End Class
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402848.html
標籤:
上一篇:僅決議陣列JSON的第一個物件
下一篇:為發件人物件處理程式創建函式
