IS-A Vs HAS-A Relationship in Java

Connect with

IS-A Vs HAS-A Relationship in JavaLearn different aspects of IS-A Vs HAS-A Relationship in Java. IS-A (Inheritance) relationship and HAS-A (composition) relationship play a vital role in design consideration, design principles.

1. Overview of IS-A Vs HAS-A Relationship in Java

These two IS-A Vs HAS-A Relationship mostly asked from experience developer to check whether he/she knows basics of design consideration or not. In the object-oriented world, re-use is the basic concept and technique either via IS-A (inheritance) or HAS-A ( composition) relationship.

The fundamental of IS-A is referring to inheritance, it means when inheriting anything from the superclass, you can say IS-A applies. For e.g. IS-A means “SUVCar is a type of Car”, it means, SUVCar.java inherits properties from Car.java (either by extends or implements keyword).

Has-a means “Car has Engine”, and strongly associated, it means Engine object is composed inside the class Car.

2. What is IS-A Relationship?

The fundamental of IS-A is referring to inheritance, it means when inheritance is applied you can say IS-A applies. e.g.
in the real-life world, SUVCar is a Car, the example as follows.

Example of java class

Public class SUVCar extends Car {
   
    run(){}
}
 class Car {
   
   start()  {}
   stop()  {}
}

Here , SUVCar IS-A CAR, because SUVCar inherits by extending the Car class.

3. What is HAS-A Relationship?

The fundamental of HAS-A is referring to composition, it means when association (aggregation or composition) is applied, you can say HAS-A applies. e.g.

Example of java class

 public class Car {
   
   private Engine engine;

    start()  {}

}

class Engine  {
   // for brevity an simplicity I put only 2 methods
   putOil() {}
   String getEngineNo() {}
}

here, we can say, Car has-a Engine, because Engine is composed inside the Car class.

4. Reference

IS-A vs HAS-A Relationship
I hope you enjoyed this post about IS-A vs HAS-A Relationship in Java, and you can visit Core Java tutorial for more blog post.
Your suggestions or comments are welcome to improve this post. Happy Learning! 🙂


Connect with

Leave a Comment

Your email address will not be published. Required fields are marked *