Is-A and Has-A Relationship in Java
1. Overview
- IS-A Relationship:
The concept of IS-A is totally based on Inheritance, which can be of two types Class Inheritance or Interface Inheritance. It is just like saying "A is a B type of thing". For example, Apple is a Fruit, Car is a Vehicle etc. Inheritance is uni-directional. For example, House is a Building. But Building is not a House.
It is a key point to note that you can easily identify the IS-A relationship. Wherever you see an extends keyword or implements keyword in a class declaration, then this class is said to have IS-A relationship.
- HAS-A Relationship:
Composition(HAS-A) simply means the use of instance variables that are references to other objects. For example, Maruti has Engine, or House has Bathroom.
2. Description
2.1 Is-A
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;
}
}
package relationsdemo;
public class Pulsar extends Bike
{
public void PulsarStartDemo()
{
Engine PulsarEngine = new Engine();
PulsarEngine.stop();
}
}
2.2 Has-A
package relationsdemo;
public class Pulsar extends Bike
{
public void PulsarStartDemo()
{
Engine PulsarEngine = new Engine();
PulsarEngine.stop();
}
}
package relationships;
public class Engine {
public void start(){
System.out.println("Engine Started:");
}
public void stop(){
System.out.println("Engine Stopped:");
}
}
3. Reference
https://www.c-sharpcorner.com/UploadFile/3614a6/is-a-and-has-a-relationship-in-java/
https://www.w3resource.com/java-tutorial/inheritance-composition-relationship.php