Skip to main content

Static and Dynamic Polymorphism in OOP


 
There are two types of Polymorphism.
1. Static Polymorphism.
2. Dynamic Polymorphism.

Static polymorphism is achieved through method overloading. Method overloading means there are several methods present in a class having the same name but different types/order/number of parameters.
At compile time, compiler knows which method to invoke by checking the method signatures.  So, this is called compile time polymorphism or static binding. The concept will be clear from the following example:

class Adder{
    static int add(int a, int b){
        return a + b;
    }
    static int add(int a, int b, int c){
        return a + b + c;
    }
}


class Main{
    public static void main(String[] args){
        System.out.println(Adder.add(11, 11);
        System.out.println(Adder.add(11, 11, 11);
    }
}


Dynamic Polymorphism:

Suppose a sub class overrides a particular method of the super class. Let’s say, in the program, we create an object of the subclass and assign it to the super class reference. Now, if we call the overridden method on the super class reference then the sub class version of the method will be called.
Have a look at the following example.
 
class Vehicle
{
  public void move ()
  {
    System.out.println ("Vehicle can move!");
  }
}

class MotorBike extends Vehicle
{
  public void move ()
  {
    System.out.println ("Motorbike can move and accelarate too!");
  }
}



public class Main
{
  public static void main (String[]args)
  {
    Vehicle rickshaw = new Vehicle ();
    Vehicle bike = new MotorBike ();
    rickshaw.move ();		//prints "Vehicle can move!"
    bike.move ();		// prints "Motorbike can move and accelarate too!"
  }
}

Comments

Popular posts from this blog

Difference between a Singly LinkedList and Doubly LinkedList

DFS Performance Measurement

Completeness DFS is not complete, to convince yourself consider that our search start expanding the left subtree of the root for so long path (maybe infinite) when different choice near the root could lead to a solution, now suppose that the left subtree of the root has no solution, and it is unbounded, then the search will continue going deep infinitely, in this case , we say that DFS is not complete. Optimality  Consider the scenario that there is more than one goal node, and our search decided to first expand the left subtree of the root where there is a solution at a very deep level of this left subtree , in the same time the right subtree of the root has a solution near the root, here comes the non-optimality of DFS that it is not guaranteed that the first goal to find is the optimal one, so we conclude that DFS is not optimal. Time Complexity Consider a state space that is identical to that of BFS, with branching factor b, and we start the search fro...

A Brief Overview of GPT-3 by OpenAI

    You have probably already seen some articles like "A robot wrote an entire article. Aren't you scared yet, human?" So, who is the robot here?    It's GPT-3 model. It's a transformer based language model. The full form of GPT is Generative Pre-trained Transformers. This model is developed by OpenAI. There were GPT-2 and other models released by OpenAI previously. GPT-3 was released in May 2020. GPT-3 is more robust than its predecessors. Though architecturally it doesn't have that mush difference.   GPT-3 can write articles, poems, and even working code for you*, given some context. There are some limitations which I am going explain later in this article. It's a language model means given a text, it probabilistically predicts what tokens from a known vocabulary will come next in that string. So, it's sort of a autocomplete that we see on a phone keyboard. We type a word, and then the keyboard suggests another word that can come next. What sets GPT...