Visual Basic .NET Language
OOP कीवर्ड
खोज…
एक वर्ग को परिभाषित करना
कक्षाएं OOP के महत्वपूर्ण पहलू हैं। एक वर्ग किसी वस्तु के "खाका" जैसा होता है। एक ऑब्जेक्ट में एक वर्ग के गुण होते हैं, लेकिन विशेषताओं को केवल कक्षा के भीतर परिभाषित नहीं किया जाता है। जैसा कि प्रत्येक वस्तु अलग हो सकती है, वे अपनी विशेषताओं को परिभाषित करते हैं।
Public Class Person
End Class
Public Class Customer
End Class
एक वर्ग में उपवर्ग भी हो सकते हैं। एक उपवर्ग अपने मूल वर्ग के समान गुण और व्यवहार विरासत में प्राप्त करता है, लेकिन उसके अपने अद्वितीय गुण और वर्ग हो सकते हैं।
वंशानुक्रम संशोधक (कक्षाओं पर)
विरासत में मिली
आधार (या माता-पिता) वर्ग निर्दिष्ट करता है
Public Class Person
End Class
Public Class Customer
Inherits Person
End Class
'One line notation
Public Class Student : Inherits Person
End Class
संभव वस्तुएं:
Dim p As New Person
Dim c As New Customer
Dim s As New Student
NotInheritable
प्रोग्रामर को बेस क्लास के रूप में उपयोग करने से रोकता है।
Public NotInheritable Class Person
End Class
संभव वस्तुएं:
Dim p As New Person
MustInherit
निर्दिष्ट करता है कि वर्ग केवल आधार वर्ग के रूप में उपयोग के लिए अभिप्रेत है। (सार वर्ग)
Public MustInherit Class Person
End Class
Public Class Customer
Inherits Person
End Class
संभव वस्तुएं:
Dim c As New Customer
वंशानुक्रम संशोधक (गुणों और विधियों पर)
overridable
एक वर्ग में एक संपत्ति या विधि को एक व्युत्पन्न वर्ग में ओवरराइड करने की अनुमति देता है।
Public Class Person
Public Overridable Sub DoSomething()
Console.WriteLine("Person")
End Sub
End Class
ओवरराइड
ओवरराइड करने योग्य संपत्ति या विधि को आधार वर्ग में परिभाषित किया गया है।
Public Class Customer
Inherits Person
'Base Class must be Overridable
Public Overrides Sub DoSomething()
Console.WriteLine("Customer")
End Sub
End Class
NotOverridable
किसी संपत्ति या विधि को विरासत में मिली श्रेणी में अधिभूत होने से रोकता है। डिफ़ॉल्ट व्यवहार। केवल ओवरराइड विधियों पर घोषित किया जा सकता है
Public Class Person
Public Overridable Sub DoSomething()
Console.WriteLine("Person")
End Sub
End Class
Public Class Customer
Inherits Person
Public NotOverridable Overrides Sub DoSomething()
Console.WriteLine("Customer")
End Sub
End Class
Public Class DetailedCustomer
Inherits Customer
'DoSomething can't be overridden
End Class
उदाहरण उपयोग:
Dim p As New Person
p.DoSomething()
Dim c As New Customer
c.DoSomething()
Dim d As New DetailedCustomer
d.DoSomething()
आउटपुट:
Person
Customer
Customer
MustOverride
आवश्यकता है कि एक व्युत्पन्न वर्ग संपत्ति या विधि को ओवरराइड करता है।
MustOverride विधियाँ MustInherit वर्गों में घोषित की जानी चाहिए ।
Public MustInherit Class Person
Public MustOverride Sub DoSomething()
'No method definition here
End Class
Public Class Customer
Inherits Person
'DoSomething must be overridden
Public Overrides Sub DoSomething()
Console.WriteLine("Customer")
End Sub
End Class
उदाहरण उपयोग:
Dim c As New Customer
c.DoSomething()
आउटपुट:
Customer
MyBase
MyBase कीवर्ड एक ऑब्जेक्ट वैरिएबल की तरह व्यवहार करता है जो क्लास के वर्तमान उदाहरण के बेस क्लास को संदर्भित करता है।
Public Class Person
Public Sub DoSomething()
Console.WriteLine("Person")
End Sub
End Class
Public Class Customer
Inherits Person
Public Sub DoSomethingElse()
MyBase.DoSomething()
End Sub
End Class
उपयोग उदाहरण:
Dim p As New Person
p.DoSomething()
Console.WriteLine("----")
Dim c As New Customer
c.DoSomething()
c.DoSomethingElse()
आउटपुट:
Person
----
Person
Person
मुझे बनाम MyClass
Me वर्तमान वस्तु उदाहरण का उपयोग करता है।
MyClass उस सदस्य में वर्ग का उपयोग करता है जहां सदस्य को बुलाया जाता है
Class Person
Public Overridable Sub DoSomething()
Console.WriteLine("Person")
End Sub
Public Sub useMe()
Me.DoSomething()
End Sub
Public Sub useMyClass()
MyClass.DoSomething()
End Sub
End Class
Class Customer
Inherits Person
Public Overrides Sub DoSomething()
Console.WriteLine("Customer")
End Sub
End Class
उदाहरण उपयोग:
Dim c As New Customer
c.useMe()
c.useMyClass()
आउटपुट:
Customer
Person
ओवरलोडिंग
ओवरलोडिंग एक से अधिक प्रक्रियाओं का निर्माण, उदाहरण के निर्माता, या एक ही नाम के साथ एक वर्ग में संपत्ति लेकिन विभिन्न तर्क प्रकार हैं।
Class Person
Overloads Sub Display(ByVal theChar As Char)
' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
' Add code that displays Integer data.
End Sub
Overloads Sub Display(ByVal theDouble As Double)
' Add code that displays Double data.
End Sub
End Class
छैया छैया
यह एक ऐसे सदस्य को फिर से घोषित करता है, जो अतिदेय नहीं है। केवल उदाहरण के लिए कॉल प्रभावित होंगे। आधार कक्षाओं के अंदर का कोड इससे प्रभावित नहीं होगा।
Public Class Person
Public Sub DoSomething()
Console.WriteLine("Person")
End Sub
Public Sub UseMe()
Me.DoSomething()
End Sub
End Class
Public Class Customer
Inherits Person
Public Shadows Sub DoSomething()
Console.WriteLine("Customer")
End Sub
End Class
उदाहरण उपयोग:
Dim p As New Person
Dim c As New Customer
p.UseMe()
c.UseMe()
Console.WriteLine("----")
p.DoSomething()
c.DoSomething()
आउटपुट:
Person
Person
----
Person
Customer
नुकसान :
उदाहरण 1, जेनेरिक के माध्यम से एक नई वस्तु बनाना। किस फ़ंक्शन का उपयोग किया जाएगा ??
Public Sub CreateAndDoSomething(Of T As {Person, New})()
Dim obj As New T
obj.DoSomething()
End Sub
उदाहरण का उपयोग:
Dim p As New Person
p.DoSomething()
Dim s As New Student
s.DoSomething()
Console.WriteLine("----")
CreateAndDoSomething(Of Person)()
CreateAndDoSomething(Of Student)()
आउटपुट: अंतर्ज्ञान द्वारा परिणाम समान होना चाहिए। फिर भी यह सच नहीं है।
Person
Student
----
Person
Person
उदाहरण 2:
Dim p As Person
Dim s As New Student
p = s
p.DoSomething()
s.DoSomething()
आउटपुट: अंतर्ज्ञान से आप सोच सकते हैं कि पी और एस बराबर हैं और समान व्यवहार करेंगे। फिर भी यह सच नहीं है।
Person
Student
इस सरल उदाहरण में छाया के अजीब व्यवहार को सीखना आसान है। लेकिन वास्तविक जीवन में यह बहुत आश्चर्यचकित करता है। यह उचित रूप से छाया के उपयोग को रोकने के लिए है। जितना संभव हो सके अन्य विकल्पों का उपयोग करना चाहिए (ओवरराइड्स आदि)।
इंटरफेस
Public Interface IPerson
Sub DoSomething()
End Interface
Public Class Customer
Implements IPerson
Public Sub DoSomething() Implements IPerson.DoSomething
Console.WriteLine("Customer")
End Sub
End Class