Head1 Head2

Dotnet Framework

Interoperability

Threading

Remoting

Webservices

Caching Concepts

OOPS

ASP.NET

NET Architecture

ADO.NET

SQL SERVER

UML

Project Management

OOPS (Part II)

(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

Continue to Part III

Top

  Home   |   Submit a Question   |   Share your Interview Experience   |   Contact Us  
Footer
 
Copyright © Gurmeet Singh Khalsa
Website designed by: Freelance Web