INHERITANCE IN JAVA Inheritance in Java Mechanism of

  • Slides: 30
Download presentation
 INHERITANCE IN JAVA

INHERITANCE IN JAVA

Inheritance in Java Mechanism of deriving new class from old class. The old class

Inheritance in Java Mechanism of deriving new class from old class. The old class is known as- Base Class / Super class / Parent Class The new class is known as Derived class/ Sub Class / Child class Types: 1. 2. 3. 4. Single Inheritance Multilevel Inheritance Multiple inheritance Hierarchical Inheritance

Inheritance In Java Single inheritance When a class extends another one class only then

Inheritance In Java Single inheritance When a class extends another one class only then we call it a single inheritance. The below flow diagram shows that class B extends only one class which is A. Here A is a parent class of B and B would be A a child class of A. B

Single Inheritance example program in Java Class A { public void method. A() {

Single Inheritance example program in Java Class A { public void method. A() { System. out. println("Base class method"); } } Class B extends A { public void method. B() { System. out. println("Child class method"); } public static void main(String args[]) { B obj = new B(); obj. method. A(); //calling super class method obj. method. B(); //calling local method } }

Single Inheritance example program in Java class Base { Base() { System. out. println("Base

Single Inheritance example program in Java class Base { Base() { System. out. println("Base Class Constructor Called "); } } class Derived extends Base { Derived() { System. out. println("Derived Class Constructor Called "); } } public class Main { public static void main(String[] args) { Derived d = new Derived(); } }

Sub Class Constructor A subclass constructor is used to construct the instance variables of

Sub Class Constructor A subclass constructor is used to construct the instance variables of both the subclass and the superclass. The subclass constructor uses the keyword super to invoke the constructor method of superclass. The super Keyword is used with following Conditions � super may only be used within a subclass constructor. � The call to super must appear as first statement. � Parameters in the super call must match with declaration in superclass

Single Inheritance example program in Java class Vehicle { Vehicle() { System. out. println("Vehicle

Single Inheritance example program in Java class Vehicle { Vehicle() { System. out. println("Vehicle is created"); } } class Bike extends Vehicle{ Bike() { super(); //will invoke parent class constructor System. out. println("Bike is created"); } public static void main(String args[]){ Bike b=new Bike(); } }

“Multiple Inheritance” refers to the concept of one class extending (Or inherits) more than

“Multiple Inheritance” refers to the concept of one class extending (Or inherits) more than one base class. The problem with “multiple inheritance” is that the derived class will have to manage the dependency on two base classes. A B C

Multilevel Inheritance Multilevel inheritance refers to a mechanism in OO technology where one can

Multilevel Inheritance Multilevel inheritance refers to a mechanism in OO technology where one can inherit from a derived class, thereby making this derived class the base class for the new class. As you can see in below flow diagram C is subclass or child class of B and B is a child class of A. A B C

Class X { public void method. X() { System. out. println("Class X method"); }

Class X { public void method. X() { System. out. println("Class X method"); } } Class Y extends X { public void method. Y() { System. out. println("class Y method"); } } Class Z extends Y { public void method. Z() { System. out. println("class Z method"); } public static void main(String args[]) { Z obj = new Z(); obj. method. X(); //calling grand parent class method obj. method. Y(); //calling parent class method obj. method. Z(); //calling local method } }

class Car{ public Car() { System. out. println("Class Car"); } public void vehicle. Type()

class Car{ public Car() { System. out. println("Class Car"); } public void vehicle. Type() { System. out. println("Vehicle Type: Car"); } } class Maruti extends Car{ public Maruti() { System. out. println("Class Maruti"); } public void brand() { System. out. println("Brand: Maruti"); } public void speed() { System. out. println("Max: 90 Kmph"); } }

public class Maruti 800 extends Maruti{ public Maruti 800() { System. out. println("Maruti Model:

public class Maruti 800 extends Maruti{ public Maruti 800() { System. out. println("Maruti Model: 800"); } public void speed() { System. out. println("Max: 80 Kmph"); } public static void main(String args[]) { Maruti 800 obj=new Maruti 800(); obj. vehicle. Type(); obj. brand(); obj. speed(); } }

class Design { Design(){ System. out. println("Design(). . . "); } } class Coding

class Design { Design(){ System. out. println("Design(). . . "); } } class Coding extends Design { Coding(){ System. out. println("coding(). . . "); } } class Testing extends Coding { Testing() { System. out. println("Testing(). . . "); } } public class Test. Call. Order { public static void main(String[] args) { //Create object of bottom most class object System. out. println("Construct or call order. . . "); new Testing(); } }

class X { int i; X(int i) { this. i = i; System. out.

class X { int i; X(int i) { this. i = i; System. out. println("Created X"); } } class Y extends X { int j; Y(int i, int j) { super(i); this. j = j; System. out. println("Created Y"); } } class Z extends Y { int k; Z(int i, int j, int k) { super(i, j); this. k = k; System. out. println("Created Z"); } } class Multi. Level. Constructors { public static void main(String arg[]) { Z z = new Z(12, 22, 32); System. out. println("--------"); } }

Hierarchical Inheritance In such kind of inheritance one class is inherited by many sub

Hierarchical Inheritance In such kind of inheritance one class is inherited by many sub classes. In below example class B, C and D inherits the same class A. A is parent class (or base class) of B, C & D. A B C D

Class A { public void method. A() { System. out. println("method of Class A");

Class A { public void method. A() { System. out. println("method of Class A"); } } Class B extends A { public void method. B() { System. out. println("method of Class B"); } } Class C extends A { public void method. C() { System. out. println("method of Class C"); } }

Class D extends A { public void method. D() { System. out. println("method of

Class D extends A { public void method. D() { System. out. println("method of Class D"); } } Class My. Class { public static void main(String args[]) { B obj 1 = new B(); C obj 2 = new C(); D obj 3 = new D(); obj 1. method. A(); obj 2. method. A(); obj 3. method. A(); }} `

Overriding Methods If subclass (child class) has the same method as declared in the

Overriding Methods If subclass (child class) has the same method as declared in the parent class, it is known as method overriding. 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. Advantage of Java Method Overriding � provide specific implementation of a method that is already provided by its super class. Rules for 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).

Example class Vehicle { void run() { System. out. println("Vehicle is running"); } }

Example class Vehicle { void run() { System. out. println("Vehicle is running"); } } class Bike extends Vehicle { void run() { System. out. println("Bike is running safely"); } public static void main(String args[]) { Bike obj = new Bike(); obj. run(); } }

 class Bank{ int get. Rate. Of. Interest() {return 0; } } class SBI

class Bank{ int get. Rate. Of. Interest() {return 0; } } class SBI extends Bank{ int get. Rate. Of. Interest() {return 8; } } class ICICI extends Bank{ int get. Rate. Of. Interest() {return 7; } } class Test{ public static void main(String args[]){ SBI s=new SBI(); ICICI i=new ICICI(); System. out. println("SBI Rate of Interest: "+s. get. Rate. Of. Interest()); System. out. println("ICICI Rate of Interest: "+i. get. Rate. Of. Interest()); }

Method Overloading Method Overriding 1) Method overloading is used Method overriding is used to

Method Overloading Method Overriding 1) Method overloading is used Method overriding is used to increase the readability of to provide the specific the program. implementation of the method that is already provided by its super class. 2) method overloading is performed within a class. Method overriding occurs in two classes that have IS -A relationship. 3) In case of method overloading parameter must be different. In case of method overriding parameter must be same.

Final variables and Methods All methods and variables can be overridden by default in

Final variables and Methods All methods and variables can be overridden by default in subclasses. To prevent the subclasses from overriding the members of the superclass, declare them as final using final keyword. final int SIZE=10; final void showstatus(. . ) {…} Defining method final ensures that functionality of defined method will not be altered. Similarly the value of final variable never be changed.

Final Classes A class that can not be sub-classed is called final class Aclass

Final Classes A class that can not be sub-classed is called final class Aclass { … } final class Bclass extends Someclass { … }

Finalizer Methods Constructors are used to initialize an object when it is declared. This

Finalizer Methods Constructors are used to initialize an object when it is declared. This process is known as “Initialization”. Similarly, java supports a concept called “finalization”. Java run time is automatic garbage collecting system. It automatically frees up the memory resources used by the objects. But objects may hold other non-object resources. To free these resources we must use a finalizer method finalize( )

Abstract Methods and Classes A class declared as abstract is known as abstract class.

Abstract Methods and Classes A class declared as abstract is known as abstract class. It needs to be extended and its method implemented. It cannot be instantiated. Syntax to declare the abstract class <class_name>{ } Abstract Method • A method that is declared as abstract and does not have implementation is known as abstract method. Syntax to define the abstract method abstract return_type <method_name>(); //no braces{}

Example abstract class Bike{ abstract void run( ); } class Honda extends Bike {

Example abstract class Bike{ abstract void run( ); } class Honda extends Bike { void run() { System. out. println("running safely. . "); } } public static void main(String args[]) { Bike obj = new Honda(); obj. run(); }

//example of abstract class having constructor, field and metho d abstract class Bike {

//example of abstract class having constructor, field and metho d abstract class Bike { int limit=30; Bike( ) { System. out. println("constructor is invoked"); } void get. Details() { System. out. println("it has two wheels"); } abstract void run(); } class Honda extends Bike{ void run(){ System. out. println("running safely. . "); } public static void main(String args[]){ Bike obj = new Honda(); obj. run(); obj. get. Details();

Methods with Varargs represents variable length arguments in methods. It makes the code simpler

Methods with Varargs represents variable length arguments in methods. It makes the code simpler and flexible. <access specifier> void method-name(object…arguments) In this syntax, the method contains an argument called varargs , in which � Object is type of an argument. � Ellipsis (…) is the key to varargs and � arguments is the name of variable.

 Thus varargs allows us to declare a method with the unspecified number of

Thus varargs allows us to declare a method with the unspecified number of parameters. The varargs must be the final argument in the argument list of a method. Example : Public void sample(String username, String password, String mail. Id); This method can be replaced by varargs: public void sample(String … var_name)

Example program for varargs class Exampleprg { Exampleprg (String… person) { for(String name: person)

Example program for varargs class Exampleprg { Exampleprg (String… person) { for(String name: person) { System. out. println(“Hello ”+ name); } } public static void main(String args[]) { Exampleprg(“John”, “Janny”, “Janardan”); } }