Polymorphism:
- Polymorphism is the concept where object behaves differently in different situations.
- Defining an Object(class) that shows different functionality with same name.

Polymorphism is of two types:
- Compile time polymorphism
- Runtime polymorphism
Compile time polymorphism:
- It is method overloading technique.
- Defining multiple methods with same name and different signature(parameters).
- Parameters can be either different length or different type.
- Overloading belongs to single class(object).
class Calculator { void add(int x, int y) { int sum = x+y; System.out.println(“Sum of 2 numbers is : ” + sum); } void add(int x, int y, int z) { int sum = x+y+z; System.out.println(“Sum of 3 numbers is : ” + sum); } } class Main { public static void main(String[] args) { Calculator calc = new Calculator(); calc.add(10, 20); calc.add(10, 20, 30); } } |
println() method is pre-defined and overloaded. Hence it can print any type of data:
class Overload { public static void main(String[] args) { System.out.println(10); System.out.println(12.345); System.out.println(‘g’); System.out.println(“java”); } } |
Can we overload Constructor?
- Yes allowed.
- Overloaded constructors can connect using this() method is called Constructor chaining.
Can we overload main() method ?
- Yes.
- JVM invokes only standard main() method.
- Other main() methods must be called manually like other methods in application.
class Pro { public static void main(String[] args) { System.out.println(“Standard main invoked by JVM”); Pro obj = new Pro(); obj.main(); Pro.main(10); } void main(){ System.out.println(“No args main”); } static void main(int x){ System.out.println(“One arg main”); } } |
Can we write main() as ‘static public’ instead of ‘public static’?
- We can specify modifiers and access modifiers in any order. All the following declarations are valid in java.
public static final int a; | static public final int a; | final static public int a; |
final public static int a; | static final public int a; | public final static int a; |