JAVA PROGRAMMING NOTES
PART 3
,..
Module 3
Inheritance in Java
Inheritance in java is a mechanism in which one object acquires all the properties and behaviors
of parent object.
The idea behind inheritance in java is that you can create new classes that are built upon existing
classes. When you inherit from an existing class, you can reuse methods and fields of parent class,
and you can add new methods and fields also.
Inheritance represents the IS-A relationship, also known as parent-child relationship.
For Method Overriding (so runtime polymorphism can be achieved).
For Code Reusability. Syntax of Java
Inheritance class Subclass-name extends
Superclass-name
{
//methods and fields
}
The extends keyword indicates that you are making a new class that derives from an existing
class.
In the terminology of Java, a class that is inherited is called a super class. The new class is called
a subclass.
As displayed in the above figure, Programmer is the subclass and Employee is the superclass.
Relationship between two classes is Programmer IS-A Employee.It means that Programmer is a
type of Employee. class Employee{ float salary=40000;
}
class Programmer extends Employee{
int bonus=10000; public static void main(String
args[]){
Programmer p=new Programmer();
System.out.println("Programmer salary is:"+p.salary);
System.out.println("Bonus of Programmer is:"+p.bonus);
}
}
Programmer salary is:40000.0
Bonus of programmer is:10000
In the above example, Programmer object can access the field of own class as well as of
Employee class i.e. code reusability.
Types of inheritance in java
,..
Note: Multiple inheritance is not supported in java through class.When a class extends multiple
classes i.e. known as multiple inheritance.
Multiple inheritances in java
To reduce the complexity and simplify the language, multiple inheritance is not supported in
java.Consider a scenario where A, B and C are three classes. The C class inherits A and B classes.
If A and B classes have same method and you call it from child class object, there will be ambiguity
to call method of A or B class.
Since compile time errors are better than runtime errors, java renders compile time error if you
inherit 2 classes. So whether you have same method or different, there will be compile time error
now. class A{ void msg(){System.out.println("Hello");}
} class B{ void
msg(){System.out.println("Welcome");}
}
class C extends A,B{//suppose if it were
Public Static void main(String args[]){ C obj=new
C(); obj.msg();//Now which msg() method would be
invoked?
}
}
Test it Now
Compile Time Error
Method Overriding in Java
If subclass (child class) has the same method as declared in the parent class, it is known as
method overriding in java.
In other words, If subclass provides the specific implementation of the method that has been
provided by one of its parent class, it is known as method overriding.
Usage of Java Method Overriding
Method overriding is used to provide specific implementation of a method that is already
provided by its super class.
Method overriding is used for runtime polymorphism
Rules for Java Method Overriding
method must have same name as in the parent class
method must have same parameter as in the parent class.
must be IS-A relationship (inheritance).
, ..
}
class Bike extends Vehicle{ public
static void main(String args[]){ Bike obj
= new Bike(); obj.run();
}
}
Test it Now
Output:Vehicle is running
Problem is that I have to provide a specific implementation of run() method in subclass that is
why we use method overriding.
Example of method overriding
In this example, we have defined the run method in the subclass as defined in the parent class but
it has some specific implementation. The name and parameter of the method is same and there is
IS-A relationship between the classes, so there is method overriding.
class Vehicle{ void
run(){System.out.println("Vehicle is running");}
}
class Bike2 extends Vehicle{ void
run(){System.out.println("Bike is running safely");} public
static void main(String args[]){ Bike2 obj = new
Bike2(); obj.run();
}
Output:Bike is running safely
Real example of Java Method Overriding
Consider a scenario, Bank is a class that provides functionality to get rate of interest. But, rate of
interest varies according to banks. For example, SBI, ICICI and AXIS banks could provide 8%,
7% and 9% rate of interest.
Java method overriding example of
bank class Bank{ int
getRateOfInterest(){return 0;} } class