Is-A and Has-A Relationship in Java

Introduction

In Java, we can reuse our code using an Is-A relationship or using a Has-A relationship. An Is-A relationship is also known as inheritance and a Has-A relationship is also known as composition in Java.

Is-A Relationship in Java

In Java, an Is-A relationship depends on inheritance. Further inheritance is of two types, class inheritance and interface inheritance. It is used for code reusability in Java. For example, a Potato is a vegetable, a Bus is a vehicle, a Bulb is an electronic device and so on. One of the properties of inheritance is that inheritance is unidirectional in nature. Like we can say that a house is a building. But not all buildings are houses. We can easily determine an Is-A relationship in Java. When there is an extends or implement keyword in the class declaration in Java, then the specific class is said to be following the Is-A relationship.

Has-A Relationship in Java

In Java, a Has-A relationship is also known as composition. It is also used for code reusability in Java. In Java, a Has-A relationship simply means that an instance of one class has a reference to an instance of another class or an other instance of the same class. For example, a car has an engine, a dog has a tail and so on. In Java, there is no such keyword that implements a Has-A relationship. But we mostly use new keywords to implement a Has-A relationship in Java.

IS-A and HAS-A relationship

Example

package relationsdemo;

public class Bike

{

    private String color; 

    private int maxSpeed;

    public void bikeInfo()

    {

        System.out.println("Bike Color= "+color + " Max Speed= " + maxSpeed);

    }

    public void setColor(String color)

    {

        this.color = color;

    }

    public void setMaxSpeed(int maxSpeed)

    {

        this.maxSpeed = maxSpeed;

    }

}

 

In the code above the Bike class has a few instance variables and methods.

 

package relationsdemo;

public class Pulsar extends Bike

{

    public void PulsarStartDemo()

    {

        Engine PulsarEngine = new Engine();

       PulsarEngine.stop();

    }

}

 

Pulsar is a type of bike that extends the Bike class that shows that Pulsar is a Bike. Pulsar also uses an Engine's method, stop, using composition. So it shows that a Pulsar has an Engine.

 

package relationsdemo;

public class Engine

{

    public void start()

    {

        System.out.println("Started:");

    }

    public void stop()

    {

        System.out.println("Stopped:");

    }

}

 

The Engine class has the two methods start( ) and stop( ) that are used by the Pulsar class.

 

package relationsdemo;

public class Demo

{

    public static void main(String[] args)

    {

        Pulsar myPulsar = new Pulsar();

        myPulsar.setColor("BLACK");

        myPulsar.setMaxSpeed(136);

        myPulsar.bikeInfo();

       myPulsar.PulsarStartDemo();

    }

}

 

In the code above we make an object of the Pulsar class and then initialize it. All the methods like setColor( ), bikeInfo( ), setMaxSpeed( ) are used here because of the Is-A relationship of the Pulsar class with the Bike class.

 

Output

example of IS-A and HAS-A relationship


Summary

 

In this article you learn about the Is-A and Has-A relationships in Java.

Up Next
    Ebook Download
    View all
    Learn
    View all