$show=/label

Java IS-A and HAS-A Relationship With Examples

SHARE:

A quick guide to IS-A and HAS-A Relationship in java with examples

Overview


Nowadays, Many programmers get confused with these IS-A and HAS-A relationships in java. It is a common interview question for freshers and experienced programmers to check their basic knowledge of oops principles.


We will discuss the following

1) IS-A Relationship (Inheritance)
2) HAS-A Relationship (Association)
3) Examples for each type
4) Interview Questions

Java IS-A and HAS-A Relationship With Examples




The main idea of these two principles is code reusability and easy code maintenance. You will see now how the code can be easily reusable in many places and used by many other programmers.



IS-A Relationship (Inheritance)


IS-A Relationship can be formed with a minimum of two classes with a relation. This is referred as Inheritance in java.
Let us take a simple example for our understanding. We know every four-wheeler Car is a Vehicle.
Honda is a Car
Suziki is a Car
Toyota is a Car
benz is a Car

So, From these examples all four wheeler brands are Cars and all have some common features such as color, max speed, gears type etc. These common features will be in Car class and car specific features will be in Car Brand car.

IS-A relationship is implemented by using the "extends" keyword in java inheritance. Whenever you find the "extends" keyword anywhere in your application that is IS-A Relationship.

Creating one is Car class and many car specific classes.


IS-A Relationship Example


// Common features class
class Car {
 int avgSpeed;
 int currentSpeed;

 public int getCurrentSpeed() {
  return currentSpeed;
 }

 public void setCurrentSpeed(int currentSpeed) {
  this.currentSpeed = currentSpeed;
 }

 public int getAvgSpeed() {
  return avgSpeed;
 }

 public void setAvgSpeed(int maxSpeed) {
  this.avgSpeed = maxSpeed;
 }

 public int getNoOfGears() {
  return 6;
 }

 public String getDefaultColor() {
  return "White";
 }

}


In-Car class, it has common methods which are used by all its subclasses. It has default no of gears, colour, can be set the current speed.

Below is a Honda car which is a subclass of Car. It has its own specific max speed is 120. Inside the Honda car, we can use all methods of Car class.


// Honda specific implementation class
class Honda extends Car {

 public void startHondaCar() {
  setAvgSpeed(70);
  System.out.println("Started Honda Car with average speed : " + getAvgSpeed());
 }

 public int getMaxSpeed() {
  return 120;
 }

 public void stopHondaCar() {
  System.out.println("Honda Car has stopped");
 }
}


Below is a Maruthi car which is a subclass of Car. It has its own specific max speed is 100. Inside the Honda car, we can use all methods of Car class.


// Maruthi specific implementation class
class Maruthi extends Car {

 public void startHondaCar() {
  setAvgSpeed(100);
  System.out.println("Started Maruthi Car with average speed : " + getAvgSpeed());
 }

 public int getMaxSpeed() {
  return 100;
 }

 public void stopHondaCar() {
  System.out.println("Maruthi Car has stopped");
 }

}


In these two Honda, Maruthi classes have access to Car class and all Car methods are accessible from these subclasses.

Main class of IS-A relationship.

// Main method for IS-A Relationship
public class IsARelationShip {

 public static void main(String[] args) {
  System.out.println("Honda specific implementation.");
  Honda hondaCar = new Honda();
  hondaCar.startHondaCar();
  System.out.println("Honda car max speed: " + hondaCar.getMaxSpeed());
  hondaCar.stopHondaCar();

  System.out.println("\nMaruthi specific implementation.");
  Maruthi maruthiCar = new Maruthi();
  maruthiCar.startHondaCar();
  System.out.println("Honda car max speed: " + maruthiCar.getMaxSpeed());
  maruthiCar.stopHondaCar();

 }

}

Output:


Honda specific implementation.
Started Honda Car with average speed : 70
Honda car max speed: 120
Honda Car has stopped

Maruthi specific implementation.
Started Maruthi Car with average speed : 100
Honda car max speed: 100
Maruthi Car has stopped

In this example program, Car class has all the common features of a car which all are required by all its implementation cars which can be default features. If Honda wants its own specific then they have the ability to provide its own implementation for those methods which is called as Method Overriding.

Please go through the above program and leave your questions in the comments section.

HAS-A Relationship (Association)


HAS-A relationship also can be formed by a minimum of two classes. If any class has an instance variable that referring another class.

Let us break them down into examples for better understanding. Honda car has an Engine, Maruthi car has an Engine.


HAS-A Relationship Example

Creating an Engine class that has engine related functions.


// Engine specific implementation class
class Engine {
 public void startWithDieselEngine() {
  System.out.println("Diesel engine has added and it's started");
 }

 public void startWithPetrolEngine() {
  System.out.println("Petrol engine has added and it's started");
 }

 public void startWithAutomaticEngine() {
  System.out.println("Automatic engine has added and it's started");
 }
}


Creating ToyotaDiesel class which has instance variable of Engine class. Instance variable engine calls startWithDieselEngine() method and ignore the remaining methods in the Engine class.


// Toyota Diesel car
class ToyotaDiesel {

 public Engine engine;

 public Engine getEngine() {
  return engine;
 }

 public void setEngine(Engine engine) {
  this.engine = engine;
 }

 public ToyotaDiesel() {
  System.out.println("Toyota Diesel  car has constructed");
 }

 public void startEngine() {
  engine.startWithDieselEngine();
 }
}


Another class, instance variable referring to Engine class. Invoking benz automatic engine startWithDieselEngine().

// Benz Automatic car
class BenzAutomatic {

 public Engine engine;

 public Engine getEngine() {
  return engine;
 }

 public void setEngine(Engine engine) {
  this.engine = engine;
 }

 public BenzAutomatic() {
  System.out.println("Benz Automatic car has constructed");
 }

 public void startEngine() {
  engine.startWithDieselEngine();
 }
}

Main method IS-A relationship class:


// Main method for IS-A Relationship
public class HasARelationShip {

 public static void main(String[] args) {
  // Creating Engine Object
  Engine engine = new Engine();

  // Toyota diesel car
  System.out.println("ToyotaDiesel specific implementation.");
  ToyotaDiesel toyotaDieselCar = new ToyotaDiesel();
  toyotaDieselCar.setEngine(engine);
  toyotaDieselCar.startEngine();

  // Benz Automatic car
  System.out.println("\nBenzAutomatic specific implementation.");
  BenzAutomatic benzAutomatic = new BenzAutomatic();
  benzAutomatic.setEngine(engine);
  benzAutomatic.startEngine();

 }

}

Output:


ToyotaDiesel specific implementation.
Toyota Diesel  car has constructed
Diesel engine has added and it's started

BenzAutomatic specific implementation.
Benz Automatic car has constructed
Diesel engine has added and it's started

Interview Questions

You must have a clear understanding of the following questions now.

1) What is IS-A Relationship.
2) What is HAS-A Relationship.
3) What are the differences between IS-A and HAS-A relationships?
4) When do you use both. Give some examples.

Summary


Java IS-A and HAS-A Relationship play a significant role in all applications.
IS-A relationship is declared with the "extends" keyword and helpful when all functionalities are needed in sub-classes. This is handled by the java compiler with intelligence.
Whereas HAS-A Relationship is not declared with any keyword but it comes into reality when using an instance variable to another class that has some common functionalities. You can see that only one method is used in IS-A relationship examples.

Please leave if you have interview questions on this topic.

COMMENTS

BLOGGER: 2
  1. In summary you Write HAS-A relation is declared with extends keyword and IS-A Relationship is not declared with any keyword is totally wrong please check once in another web-side or text-book .
    Try to correct the mistake.

    ReplyDelete
    Replies
    1. Corrected. Many thanks for bringing into attention.

      Delete
Please do not add any spam links in the comments section.

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java IS-A and HAS-A Relationship With Examples
Java IS-A and HAS-A Relationship With Examples
A quick guide to IS-A and HAS-A Relationship in java with examples
https://blogger.googleusercontent.com/img/a/AVvXsEim0eFK5i2qni82K6quxaeSJDj7QdZCAJF8ywdwQyt8Ii9hbfD9GVGXkD8f1NVqJZsADoNdpyA2awAogDCo3IMK58R__LhZ2ZX0SJ4Z7aqVWQZLuUzf82u2thltLn0YJEEGyXnfc9AVLfR1foeUEifmJlUusoWTiZq7fmERpSpQzfNhHPdJqYHDmwGs=w400-h219
https://blogger.googleusercontent.com/img/a/AVvXsEim0eFK5i2qni82K6quxaeSJDj7QdZCAJF8ywdwQyt8Ii9hbfD9GVGXkD8f1NVqJZsADoNdpyA2awAogDCo3IMK58R__LhZ2ZX0SJ4Z7aqVWQZLuUzf82u2thltLn0YJEEGyXnfc9AVLfR1foeUEifmJlUusoWTiZq7fmERpSpQzfNhHPdJqYHDmwGs=s72-w400-c-h219
JavaProgramTo.com
https://www.javaprogramto.com/2017/11/is-a-has-a-relationship.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2017/11/is-a-has-a-relationship.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content