Skip to content

.NET Programming

Programming Language | .NET Multiple Inheritance Issue

.NET platform does not support multiple inheritance. Do not confuse multilevel inheritance with multiple inheritance. With multiple inheritance we can have a subclass that inherits from two classes at the same time.

Let’s suppose we have an application that has a class Customers and another class Vendors. If you wanted to combine these two classes into one CustomerVendor class it would be a combination of Customers and Vendors just like the diagram below.

Please copy the following URL into your browser to view the diagram: [http://www.vbprofs.com/images/Article] Images/ThomasArt1.gif

In the above diagram we see how the CustomerVendor class inherits from both of those classes.

Multiple inheritance is complex and can be dangerous. The advantages of code re-usage prevail over complexity is up to your choice.

Multiple inheritance is not supported by VB.NET or .Net platform. Instead of multiple inheritance we can use multiple interfaces to achieve similar effect to multiple inheritance.

In VB.NET all objects have a primary or native interface, which is composed of properties, events, methods or member variables declared using Public keyword.

Objects can implement also secondary interfaces by using Implement keyword.

Sometimes it is helpful for an object to have more than one interface, allowing us to interact with the object in different ways. Inheritance allow us to create subclasses that are a specialized case of the base class.

Example

Sometimes we have a group of objects that are not the similar, but we want to handle them the same manner. We want all the objects to act as if they are the same, even though they are different.

We can have some different objects in an application, such as customer, product, invoice etc. Each object would have a default interface appropriate to each individual object, and each of them is a different class. No natural inheritance is implied between these classes.

Let’s suppose we want to print a document for each type of object. In this case we’d like to make them all act as printable object.

To accomplish this we can define a generic interface that would enable generating a printed document.

By implementing a common interface we are able to write a routine that accepts any object that implements a printed document.

To conclude, by implementing multiple interfaces in VB.NET , we can achieve a similar effect to that of multiple inheritance.

Thomas is an experienced Visual Basic developer, with expertise of 7+ years developing especially financial applications. His main IT skills are VB, SQL, Crystal Reports – should you need a Visual Basic developer for your projects feel free to contact Thomas through his personal website Kaloyani.com or through VBprofs.com [http://www.vbprofs.com] – the newest Visual Basic and VB.NET resources [http://www.vbprofs.com] portal.

Article Source: http://EzineArticles.com/?expert=Thomas_Kaloyani

http://EzineArticles.com/?.NET-:Solving-the-Multiple-Inheritance-Issue-Under-.NET-Platform&id=67392

Be Sociable, Share!
    The following two tabs change content below.

    One Comment (Add Yours)

    1. You seem to be justifying the lack of MI here by saying that a similar effect can be achieved using multiple interfaces. Yes we can achieve a “similar effect” by being forced to copy all the code from all the classes from which we are unable to inherit (because they are not the one class from which we are inheriting). We could also justify the absence of single inheritance using this same argument. Just use an interface instead and copy the code from the class from which we want to inherit. Apparently it is of little concern to everyone that this creates a staggering maintenance problem (every try keeping 10 or 20 supposedly identical copies of the same code in sync?). Any argument against multiple inheritance could just as easily be used to argue against single inheritance. Let’s instead just call the absence of MI in .NET what it is: a massive shortcoming.

    Add Your Comment (Get a Gravatar)