Week 4 - Inheritance and Polymorphism.pdf

Full Transcript

Object Oriented Programming Inheritance and Polymorphism MODULE 3 – Inheritance and Polymorphism At the end of this module, the student should be able to: 1. Define inheritance and polymorphism. 2. Identify...

Object Oriented Programming Inheritance and Polymorphism MODULE 3 – Inheritance and Polymorphism At the end of this module, the student should be able to: 1. Define inheritance and polymorphism. 2. Identify the parent class and child class 3. Write a program using inheritance and polymorphism. What is Inheritance? The process by which one class acquires the properties (data members) and functionalities(methods) of another class is called inheritance. The aim of inheritance is to provide the reusability of code so that a class has to write only the unique features and rest of the common properties and functionalities can be extended from the another class. Child Class: The class that extends the features of another class is known as child class, sub class or derived class. Parent Class: The class whose properties and functionalities are used(inherited) by another class is known as parent class, super class or Base class. Inheritance is a process of defining a new class based on an existing class by extending its common data members and methods. Inheritance allows us to reuse of code, it improves reusability in your java application. Note: The biggest advantage of Inheritance is that the code that is already present in base class need not be rewritten in the child class. This means that the data members(instance variables) and methods of the parent class can be used in the child class as. Syntax: Inheritance in Java To inherit a class we use extends keyword. Here class XYZ is child class and class ABC is parent class. The class XYZ is inheriting the properties and methods of ABC class. class XYZ extends ABC { } Inheritance Example In this example, we have a base class Teacher and a sub class PhysicsTeacher. Since class PhysicsTeacher extends the designation and college properties and work() method from base class, we need not to declare these properties and method in sub class. Here we have collegeName, designation and work() method which are common to all the teachers so we have declared them in the base class, this way the child classes like MathTeacher, MusicTeacher and PhysicsTeacher do not need to write this code and can be used directly from base class. 1|P ag e Object Oriented Programming Inheritance and Polymorphism class Teacher { String designation = "Teacher"; String collegeName = "John"; void does(){ System.out.println("Teaching"); } } public class PhysicsTeacher extends Teacher{ String mainSubject = "Physics"; public static void main(String args[]){ PhysicsTeacher obj = new PhysicsTeacher(); System.out.println(obj.collegeName); System.out.println(obj.designation); System.out.println(obj.mainSubject); obj.does(); } } Output: John Teacher Physics Teaching Based on the above example we can say that PhysicsTeacher IS-A Teacher. This means that a child class has IS-A relationship with the parent class. This inheritance is known as IS-A relationship between child and parent class Note: The derived class inherits all the members and methods that are declared as public or protected. If the members or methods of super class are declared as private then the derived class cannot use them directly. The private members can be accessed only in its own class. Such private members can only be accessed using public or protected getter and setter methods of super class as shown in the example below. class Teacher { private String designation = "Teacher"; private String collegeName = "John"; public String getDesignation() { return designation; } protected void setDesignation(String designation) { this.designation = designation; } protected String getCollegeName() { return collegeName; } protected void setCollegeName(String collegeName) { this.collegeName = collegeName; } void does(){ System.out.println("Teaching"); } } public class JavaExample extends Teacher{ 2|P ag e Object Oriented Programming Inheritance and Polymorphism String mainSubject = "Physics"; public static void main(String args[]){ JavaExample obj = new JavaExample(); System.out.println(obj.getCollegeName()); System.out.println(obj.getDesignation()); System.out.println(obj.mainSubject); obj.does(); } } The output is: John Teacher Physics Teaching The important point to note in the above example is that the child class is able to access the private members of parent class through protected methods of parent class. When we make a instance variable(data member) or method protected, this means that they are accessible only in the class itself and in child class. These public, protected, private etc. are all access specifiers and we will discuss them in the coming tutorials. Constructors and Inheritance constructor of sub class is invoked when we create the object of subclass, it by default invokes the default constructor of super class. Hence, in inheritance the objects are constructed top- down. The superclass constructor can be called explicitly using the super keyword, but it should be first statement in a constructor. The super keyword refers to the superclass, immediately above of the calling class in the hierarchy. The use of multiple super keywords to access an ancestor class other than the direct parent is not permitted. class ParentClass{ //Parent class constructor ParentClass(){ System.out.println("Constructor of Parent"); } } class JavaExample extends ParentClass{ JavaExample(){ System.out.println("Constructor of Child"); } public static void main(String args[]){ //Creating the object of child class new JavaExample(); } } 3|P ag e Object Oriented Programming Inheritance and Polymorphism Output: Constructor of Parent Constructor of Child Inheritance and Method Overriding When we declare the same method in child class which is already present in the parent class the this is called method overriding. In this case when we call the method from child class object, the child class version of the method is called. However we can call the parent class method using super keyword as I have shown in the example below: class ParentClass{ //Parent class constructor ParentClass(){ System.out.println("Constructor of Parent"); } void disp(){ System.out.println("Parent Method"); } } class JavaExample extends ParentClass{ JavaExample(){ System.out.println("Constructor of Child"); } void disp(){ System.out.println("Child Method"); //Calling the disp() method of parent class super.disp(); } public static void main(String args[]){ //Creating the object of child class JavaExample obj = new JavaExample(); obj.disp(); } } The output is : Constructor of Parent Constructor of Child Child Method Parent Method WHAT IS POLYMORPHISM? Polymorphism is one of the OOPs feature that allows us to perform a single action in different ways. For example, lets say we have a class Animal that has a method sound(). Since this is a generic class so we can’t give it a implementation like: Roar, Meow, Oink etc. We had to give a generic message. public class Animal{... public void sound(){ System.out.println("Animal is making a sound"); } } 4|P ag e Object Oriented Programming Inheritance and Polymorphism Now lets say we two subclasses of Animal class: Horse and Cat that extends Animal class. We can provide the implementation to the same method like this: public class Horse extends Animal{... @Override public void sound(){ System.out.println("Neigh"); } } and public class Cat extends Animal{... @Override public void sound(){ System.out.println("Meow"); } } As you can see that although we had the common action for all subclasses sound() but there were different ways to do the same action. This is a perfect example of polymorphism (feature that allows us to perform a single action in different ways). It would not make any sense to just call the generic sound() method as each Animal has a different sound. Thus we can say that the action this method performs is based on the type of object. What is polymorphism in programming? Polymorphism is the capability of a method to do different things based on the object that it is acting upon. In other words, polymorphism allows you define one interface and have multiple implementations. As we have seen in the above example that we have defined the method sound() and have the multiple implementations of it in the different-2 sub classes. Which sound() method will be called is determined at runtime so the example we gave above is a runtime polymorphism example. Lets write down the complete code of it: Example 1: Polymorphism in Java Runtime Polymorphism example: Animal.java public class Animal{ public void sound(){ System.out.println("Animal is making a sound"); } } Horse.java class Horse extends Animal{ @Override public void sound(){ 5|P ag e Object Oriented Programming Inheritance and Polymorphism System.out.println("Neigh"); } public static void main(String args[]){ Animal obj = new Horse(); obj.sound(); } } Output: Neigh Cat.java public class Cat extends Animal{ @Override public void sound(){ System.out.println("Meow"); } public static void main(String args[]){ Animal obj = new Cat(); obj.sound(); } } Output: Meow Example 2: Compile time Polymorphism Method Overloading on the other hand is a compile time polymorphism example. class Overload { void demo (int a) { System.out.println ("a: " + a); } void demo (int a, int b) { System.out.println ("a and b: " + a + "," + b); } double demo(double a) { System.out.println("double a: " + a); return a*a; } } class MethodOverloading { public static void main (String args []) { Overload Obj = new Overload(); double result; Obj.demo(10); Obj.demo(10, 20); result = Obj.demo(5.5); System.out.println("O/P : " + result); } 6|P ag e Object Oriented Programming Inheritance and Polymorphism } Here the method demo() is overloaded 3 times: first method has 1 int parameter, second method has 2 int parameters and third one is having double parameter. Which method is to be called is determined by the arguments we pass while calling methods. This happens at runtime compile time so this type of polymorphism is known as compile time polymorphism. Output: a: 10 a and b: 10,20 double a: 5.5 O/P : 30.25 Sources Singh, C. (2013). Encapsulation in java with example. https://beginnersbook.com/2013/05/encapsulation-in-java/ Singh, C. (2013). Encapsulation in java with example. https://beginnersbook.com/2013/03/polymorphism-in-java/ 7|P ag e

Use Quizgecko on...
Browser
Browser