मुझे पता है कि यह कुछ महीने पहले पोस्ट किया गया है, लेकिन मैं अभी भी पूर्णता के लिए प्रयास करने और उत्तर देने जा रहा हूं।
आपको बताया गया है कि आप सेdog
कक्षा में ओवरड्रिएन विधि तक पहुंच सकते हैं, और फिर आप इसे एक अलग नाम से बेनकाब कर सकते हैं। लेकिन एक सशर्त उपयोग करने के बारे में क्या?
तुम सिर्फ कर सकते हैं:
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
और फिर उन्हें पसंद फोन:
Dim dog As New Dog
Dim animal As new Animal
animal.Speak() //"Hello"
dog.Speak()//"Ruff"
dog.Speak(true)//"Hello"
वैकल्पिक रूप से, आप getTheAnimalInTheDog
और कर सकते हैं यहSpeak()
:
तुम सिर्फ कर सकते हैं:
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
और फिर फिर से:
Dim dog As New Dog
Dim animal As new Animal
animal.Speak() //"Hello"
dog.Speak()//"Ruff"
dog.GetTheAnimalInMe().Speak()//"Hello"
आशा है कि यह मदद करता है;)
"एक अन्य विकल्प, एक जानवर के रूप में वस्तु का ऐलान करते हैं और फिर एक कुत्ते को डाली जब आप कुत्ते के विस्तारित गुण की जरूरत है । " वह अंतिम भाग सच नहीं है। वैरिएबल का घोषित प्रकार व्यर्थ है जब यह दिया जाता है कि एक दिया गया उदाहरण polymorphically कैसे व्यवहार करता है। –
यह सच है, मैं इंटरफेस के मामले में सोच रहा था। –