(A) What is difference between abstract classes and interfaces?
Following are the differences between abstract and interfaces :-
√ Abstract classes can have concrete methods while interfaces have no methods
implemented.
√ Interfaces do not come in inheriting chain , while abstract classes come in
inheritance.
(B) What is a delegate ?
Delegate is a class that can hold a reference to a method or a function.Delegate class has
a signature and it can only reference those methods whose signature is compliant with the
class. Delegates are type-safe functions pointers or callbacks.
Below is a sample code which shows a example of how to implement delegates.
Public Class FrmDelegates
Inherits System.Windows.Forms.Form
Public Delegate Sub DelegateAddString()
Private Sub FrmDelegates_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub AddString()
lstDelegates.Items.Add(“Running AddString() method”)
End Sub
Private Sub cmdDelegates_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles cmdDelegates.Click
Dim objDelegateAddString As DelegateAddString
objDelegateAddString = AddressOf AddString
objDelegateAddString.Invoke()
End Sub
End Class
In the above there is a method called “AddString()” which adds a string to a listbox. You
can also see a delegate declared as :- Public Delegate Sub DelegateAddString()
This delegate signature is compatible with the “AddString” method.When i mean
compatibility that means that there return types and passing parameter types are same. Later
in command click of the button object of the Delegate is created and the method pointer
is received from “AddressOf ” keyword.Then by using the “Invoke” method the method
is invoked.
(B) What are event’s ?
As compares to delegates events works with source and listener methodology . So listener’s
who are interested in receiving some events they subscribe to the source.Once this
subscription is done the source raises events to all of it’s listener when needed.One source
can have multiple listeners.
In example sample given below class “ClsWithEvents” is a event source class , which has
a event “EventAddString()”.Now the listener’s who are interested in receiving this event’s
they can subscribe to this event. In class “FrmWithEvents” you can see the handles clause
which is associated with the “mobjClsWithEvents” objects.
Public Class ClsWithEvents
Event EventAddString(ByVal Value As String)
Public Sub AddString()
RaiseEvent EventAddString(“String added by Event”)
End Sub
End Class
Public Class FrmWithEvents
Inherits System.Windows.Forms.Form
Private WithEvents mobjClsWithEvents As New ClsWithEvents()
Private Sub FrmWithEvents_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub mobjClsWithEvents_EventAddString(ByVal Value As String) Handles mobjClsWithEvents.EventAddString
LstData.Items.Add(Value)
End Sub
Private Sub CmdRunEvents_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles CmdRunEvents.Click
mobjClsWithEvents.AddString()
End Sub
End Class
(I) Do events have return type ?
No events do not have return type.
(A) Can event’s have access modifiers ?
Event’s are always public as they are meant to serve every one registering to it.But you
can access modifiers in events.You can have events with protected keyword which will
be accessible only to inherited classes.You can have private events only for object in that
class.
(A) Can we have shared events ?
Yes you can have shared event’s note only shared methods can raise shared events.
(I) What is shadowing ?
When two elements in a program have same name , one of them can hide and shadow the
other one.So in such cases the element which shadowed the main element is referenced.
Below is a sample code , there are two classes “ClsParent” and “ClsShadowedParent”.In “ClsParent” there is a variable “x” which is a integer.”ClsShadowedParent” overrides “ClsParent” and shadows the “x” variable to a string.
Public Class ClsParent
Public x As Integer
End Class
Public Class ClsShadowedParent
Inherits ClsParent
Public Shadows x As String
End Class
(A) What’s difference between Shadowing and Overriding ?
Following are the differences between shadowing and overriding :-
√ Overriding redefines only the implementation while shadowing redefines the
whole element.
√ In overriding derived classes can refer the parent class element by using “ME”
keyword , but in shadowing you can access it by “MYBASE”.
(I) What’s difference between delegate and events?
√ Actually events use delegates in bottom. But they add an extra layer on the
delegates, thus forming the publisher and subscriber model.
√ As delegates are function to pointers they can move across any clients. So any
of the clients can add or remove events , which can be pretty confusing. But
events give the extra protection by adding the layer and making it a publisher
and subscriber model.
Just imagine one of your clients doing this
c.XyzCallback = null
This will reset all your delegates to nothing and you have to keep figuring where the error
is.
(B) If we inherit a class do the private variables also get
inherited ?
Yes the variables are inherited but can not be accessed directly by the class interface.
(B) What are different accessibility levels defined in .NET ?
Following are the five levels of access modifiers :-
√ Private : Only members of class have access.
√ Protected :-All members in current class and in derived classes can access the
variables.
√ Friend (internal in C#) :- Only members in current project have access to the
elements.
√ Protected friend (protected internal in C#) :- All members in current project
and all members in derived class can access the variables. √ Public :- All members have access in all classes and projects.
(I) Can you prevent a class from overriding ?
If you define a class as “Sealed” in C# and “NotInheritable” in VB.NET you can inherit
the class any further.
(I) What’s the use of “MustInherit” keyword in VB.NET ?
If you want to create a abstract class in VB.NET it’s done by using “MustInherit”
keyword.This acts only as base type and can not be inherited any further.You can not
create a object of a class which is marked as “MustInherit”.
(I) Why can not you specify accessibility modifier in
Interface ?
All elements in Interface should be public.So by default all interface elements are public
by default.
(A) What are similarities between Class and structure ?
Following are the similarities between classes and structures :-
√ Both can have constructors, methods, properties, fields, constants,
enumerations, events, and event handlers.
√ Structures and classes can implement interface.
√ Both of them can have constructors without parameter and with parameter.
√ Both can have delegates and events.
(A) What’s the difference between Class and structure’s ?
Following are the key differences between them :-
√ Structure are value types and classes are reference types.So structures use
stack and classes use heap.
√ Structures members can not be declared as protected , but class members can
be. You can not do inheritance in structures.
√ Structures do not require constructors while classes require.
√ Objects created from classes are terminated using Garbage collector. Structures
are not destroyed using GC.
(B) What does virtual keyword mean ?
That method and property can be overridden.
(B) What is Dispose method in .NET ?
.NET provides “Finalize” method in which we can clean up our resources.But relying on
this is not always good so the best is to implement “Idisposable” interface and implement
the “Dispose” method where you can put your clean up routines.
(B) Whats the use of “OverRides” and “Overridable”keywords ?
Overridable is used in parent class to indicate that a method can be overridden.Overrides
is used in the child class to indicate that you are overriding a method