Skip to main content

Multiple inheritance

Does Java support Multiple inheritance?

Earlier we discussed types of inheritance. In this post we will discuss why java doesn’t support multiple inheritance. We would also see how to achieve this using interfaces in Java.

Why Java doesn’t support multiple inheritance?

C++ , Common lisp and few other languages supports multiple inheritance while java doesn’t support it. It is just to remove ambiguity, because multiple inheritance can cause ambiguity in few scenarios. One of the most common scenario is Diamond problem.
What is diamond problem?

Consider the below diagram which shows multiple inheritance as Class D extends both Class B & C. Now lets assume we have a method in class A and class B & C overrides that method in their own way. Wait!! here the problem comes – Because D is extending both B & C so if D wants to use the same method which method would be called (the overridden method of B or the overridden method of C). Ambiguity. That’s the main reason why Java doesn’t support multiple inheritance.

How to achieve multiple inheritance in Java using interfaces?

interface X
{
   public void myMethod();
}
interface Y
{
   public void myMethod();
}
class Demo implements X, Y
{
   public void myMethod()
   {
       System.out.println(" Multiple inheritance example using interfaces");
   }
}
As you can see that the class implemented two interfaces. A class can implement any number of interfaces. In this case there is no ambiguity even though both the interfaces are having same method. Why? Because methods in an interface are always abstract by default, which doesn’t let them to give their implementation (or method definition ) in interface itself.

Comments

Popular posts from this blog

Switch Case

Syntax : Switch Case in Java Programming It is alternative to else-if ladder. Switch Case Syntax is similar to – C/C++  Switch. Switch allows you to choose a block of statements to run from a selection of code, based on the return value of an expression. The expression used in the switch statement must return an  int, a String, or an enumerated value . switch (selection) { // value case value1 : // checking value 1 statement ( s ) ; break ; // use to break switch flow if condition match case value2 : // checking value 2 statement ( s ) ; break ; . . case value_n : statement ( s ) ; break ; default : statement ( s ) ; } Different Ways of Using Switch Case : Switch Case Using Integer Case int i=3; switch (i) { case 1 : System . out . println ( "One player is playing this game." ) ; break ; case 2 : System . out . println ( "Two players are playing ...

Inheritance in Java

Inheritance in Java Inheritance  is one of the feature of Object-Oriented Programming (OOPs). Inheritance allows a class to use the properties and methods of another class. In other words, the derived class inherits the states and behaviors from the base class. The derived class is also called subclass and the base class is also known as super-class . The derived class can add its own additional variables and methods. These additional variable and methods differentiates the derived class from the base class. Inheritance is a  compile-time  mechanism. A super-class can have any number of subclasses . But a subclass can have only one superclass. This is because Java does not support multiple inheritance. The superclass and subclass have  “is-a”  relationship between them. Let’s have a look at the example below. Inheritance  Example Let’s consider a superclass  Vehicle . Different vehicles have different features and properties howeve...

Constructors in Java

Constructors : Initializing an Class Object in Java Programming A  constructor in Java  is a block of code similar to a method that's called when an instance of an object is created. Here are the key differences between a  constructor  and a method:  A  constructor  doesn't have a return type .   The name of the  constructor  must be the same as the name of the class. Some Rules of Using Constructor : Constructor  Initializes an Object . Constructor  cannot be called  like methods. Constructors   are called automatically  as soon as object gets created. Constructor  don’t have any return Type.  (even Void) Constructor name is same as that of “ Class Name “. Constructor  can accept parameter . Default Constructor : How Constructor Works ? class Box { //class name int height ; // variables int width ; Box ( ) ...