Tôi biết điều này đã được đăng một vài tháng trước, nhưng tôi vẫn sẽ cố gắng trả lời, có thể chỉ vì mục đích hoàn chỉnh.
Bạn được thông báo rằng bạn có thể truy cập phương pháp được ghi đè từ trong vòng lớp dog
và sau đó bạn có thể hiển thị nó bằng một tên khác. Nhưng những gì về việc sử dụng một điều kiện?
Bạn chỉ có thể làm:
Public Class Animal
Public Overridable Function Speak(Optional ByVal speakNormal as Boolean = False) As String
Return "Hello"
End Function
End Class
Public Class Dog
Inherits Animal
Public Overrides Function Speak(Optional ByVal speakNormal as Boolean = False) As String
If speakNormal then
return MyBase.Speak()
Else
Return "Ruff"
End If
End Function
End Class
Và sau đó gọi cho họ thích:
Dim dog As New Dog
Dim animal As new Animal
animal.Speak() //"Hello"
dog.Speak()//"Ruff"
dog.Speak(true)//"Hello"
Ngoài ra, bạn có thể getTheAnimalInTheDog
và làm nóSpeak()
:
Bạn chỉ có thể làm:
Public Class Animal
Public Overridable Function Speak() As String
Return "Hello"
End Function
Public MustOverride Function GetTheAnimalInMe() As Animal
End Class
Public Class Dog
Inherits Animal
Public Overrides Function Speak() As String
Return "Ruff"
End Function
Public Overrides Function GetTheAnimalInMe() As Animal
Dim a As New Animal
//Load a with the necessary custom parameters (if any)
Return a
End Function
End Class
Và sau đó một lần nữa:
Dim dog As New Dog
Dim animal As new Animal
animal.Speak() //"Hello"
dog.Speak()//"Ruff"
dog.GetTheAnimalInMe().Speak()//"Hello"
Hy vọng nó giúp;)
"Một lựa chọn khác, là để khai báo các đối tượng như một con vật, và sau đó bỏ nó vào một DOG khi bạn cần tính mở rộng của con chó . " Phần cuối cùng đó không đúng. Kiểu khai báo của biến là vô nghĩa khi nói đến cách một cá thể đã cho hoạt động đa hình. –
Đó là sự thật, tôi đã suy nghĩ về mặt giao diện. –