"상위"개체는 설정된 하위 개체의 "세부 정보"를 유지 관리하는 것으로 보입니다. 이것이 실제로 실제로 일어나기를 원하는 동안 - 이해가 안되요 왜이 일이 일어나고 있는지, 두렵습니다."부모"개체의 인스턴스가 그 자식 개체의 메서드/속성을 어떻게 사용할 수 있습니까?
새로운 부모 개체가 자식 개체로 설정되면 부모가 아닌 모든 속성/메서드가 손실되거나 액세스 할 수 없게 될 것으로 예상됩니다. 그러나 아래에 설명 된 것처럼 설정 한 것 같습니다. 사실이 아닙니다. 누군가 이런 일이 일어나는 이유를 설명 할 수 있습니까?
(끔찍한 예를 들어 사과)
주어진 다음의 세 가지 클래스 :
Public Class Person
Public Property FirstName As String
Public Property LastName As String
Public Overridable Function WriteStatement() As String
Return "[Unknown] " & FirstName & " " & LastName
End Function
End Class
Public Class Man
Inherits Person
Public Property gender As String = "Male"
Public Overrides Function WriteStatement() As String
Return "[" & gender & "] " & FirstName & " " & LastName
End Function
End Class
Public Class Woman
Inherits Person
Public Property gender As String = "Female"
Public Overrides Function WriteStatement() As String
Return "[" & gender & "] " & FirstName & " " & LastName
End Function
End Class
그리고 다음이 실행 코드 :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim boy As New Man
Dim girl As New Woman
boy.FirstName = "Scott" : boy.LastName = "Smith"
girl.FirstName = "Jane"
girl.LastName = "Jones"
Dim people As New List(Of Person)
Dim malePerson As New Person
Dim femalePerson As New Person
malePerson = boy
femalePerson = girl
people.Add(malePerson)
people.Add(femalePerson)
For Each p As Person In people
MsgBox(p.WriteStatement())
Next
'Outputs:
' [Male] Scott Smith
' [Female] Jane Jones
'
'Expected:
' [Unknown] Scott Smith
' [Unknown] Jane Jones
최종 하위
귀하의 설계는 부모 클래스가 파생 클래스의 세부 사항을 알고 필요로하지해야한다. 중단 점을 설정하고 해당 WriteStatement 문으로 이동하십시오. 'Console.WriteLine (malePerson.GetType())'이 깨달을 수도 있습니다. – Plutonix