0% found this document useful (0 votes)
25 views7 pages

Polimorphism in JAVA

Uploaded by

amartya1820
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views7 pages

Polimorphism in JAVA

Uploaded by

amartya1820
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Polimorphism.

md 2024-08-15

Polymorphism in Java
Introduction to Polymorphism
Definition of Polymorphism

Polymorphism is the ability of an object to take on many forms. In Java, it refers to the way in which a
common interface can be used to invoke different implementations of a method.

Importance of Polymorphism in Object-Oriented Programming

Polymorphism is crucial for designing flexible and reusable code. It allows objects to be treated as instances of
their parent class rather than their actual class, facilitating method overriding and dynamic method dispatch.

Real-world Analogies

Consider a person who can act as a student, an employee, or a driver depending on the context. This
versatility reflects polymorphism in object-oriented programming.

Types of Polymorphism
Compile-Time Polymorphism (Method Overloading)

Definition and Explanation

Compile-time polymorphism, or method overloading, occurs when multiple methods have the same name but
different parameters within the same class.

Need and Importance

Overloading provides flexibility and improves code readability and reusability by allowing multiple methods to
perform similar operations based on different input parameters.

Key Points

Same method name with different parameters.


Overloading cannot be achieved by return type alone.
Static methods can also be overloaded.

Examples

Method Overloading in Simple Classes:

public class OverloadExample {


public void display(int a) {
System.out.println("Integer: " + a);
}

1/7
Polimorphism.md 2024-08-15

public void display(String b) {


System.out.println("String: " + b);
}
}

Overloading Constructors:

public class ConstructorOverload {


private int num;

public ConstructorOverload() {
num = 0;
}

public ConstructorOverload(int num) {


this.num = num;
}
}

Why Use Method Overloading

Enhances code readability and reusability.


Provides flexibility in method usage by allowing methods to handle different types of input.

Practice Problem

Create a Class with Multiple Overloaded Methods:

public class OverloadPractice {


public void show() {
System.out.println("No parameters");
}

public void show(int a) {


System.out.println("Integer parameter: " + a);
}

public void show(String b) {


System.out.println("String parameter: " + b);
}
}

Solution with Code and Explanation: The show method is overloaded to accept different types of
parameters, demonstrating how Java differentiates between method calls based on parameter types.

Runtime Polymorphism (Method Overriding)

2/7
Polimorphism.md 2024-08-15

Definition and Explanation

Runtime polymorphism, or method overriding, occurs when a subclass provides a specific implementation of a
method that is already defined in its parent class. The method to be executed is determined at runtime based
on the object's type.

Need and Importance

Method overriding allows subclasses to provide specific behavior for methods that are defined in their parent
classes. It is essential for achieving dynamic method dispatch.

Key Points

Inheritance and overriding.


The role of the @Override annotation.
Access modifiers and overriding.
The role of super.

Examples

Overriding Methods in a Class Hierarchy:

class Animal {
public void sound() {
System.out.println("Animal makes a sound");
}
}

class Dog extends Animal {


@Override
public void sound() {
System.out.println("Dog barks");
}
}

Use of super to Call Parent Class Methods:

class Cat extends Animal {


@Override
public void sound() {
super.sound(); // Call the parent class method
System.out.println("Cat meows");
}
}

Why Use Method Overriding

3/7
Polimorphism.md 2024-08-15

To implement specific behavior in subclasses.


To achieve dynamic method dispatch, allowing different methods to be invoked based on the object's
runtime type.

Practice Problem

Create a Base Class and a Derived Class with Overridden Methods:

class Base {
public void display() {
System.out.println("Base class");
}
}

class Derived extends Base {


@Override
public void display() {
System.out.println("Derived class");
}
}

Solution with Code and Explanation: This example demonstrates how method overriding allows the
derived class to provide its implementation of the display method, which is invoked based on the
object's type at runtime.

Demonstrating Polymorphism with a Class Hierarchy


Example Scenario

Consider a class hierarchy involving a base class Animal and derived classes Dog and Cat. This scenario will
include both method overloading and overriding.

Method Overloading in the Base Class:

class Animal {
public void makeSound() {
System.out.println("Animal sound");
}

public void makeSound(String sound) {


System.out.println("Animal makes sound: " + sound);
}
}

Method Overriding in Derived Classes:

4/7
Polimorphism.md 2024-08-15

class Dog extends Animal {


@Override
public void makeSound() {
System.out.println("Dog barks");
}
}

class Cat extends Animal {


@Override
public void makeSound() {
System.out.println("Cat meows");
}
}

Detailed Code Explanation

Method Overloading: The makeSound method is overloaded in the Animal class to accept different
types of parameters.

Method Overriding: The Dog and Cat classes override the makeSound method to provide specific
implementations.

Output Analysis

Compile-Time Determination: Java determines which overloaded method to call based on the
method signature at compile-time.

Runtime Determination: Java determines which overridden method to call based on the actual
object's type at runtime.

Common Questions and Pitfalls

Differences Between Similar Concepts


Method Overloading vs. Method Overriding

Aspect Method Overloading Method Overriding

A subclass provides a specific


Multiple methods with the same name but
Definition implementation of a method already
different parameters within the same class.
defined in its superclass.

To increase the readability of the program by To provide a specific implementation


Purpose allowing multiple methods with the same name of a method that is already provided
but different functionality. by its superclass.

Binding Static Binding (Compile-Time) Dynamic Binding (Runtime)

When you need similar methods that differ in When you want to provide a specific
Use Case
their parameters. behavior in the subclass.

5/7
Polimorphism.md 2024-08-15

Aspect Method Overloading Method Overriding

Can be different in overloaded methods as long Must be the same as the method in
Return Type
as parameters differ. the superclass.

Constructor Overloading can also apply to constructors in a Overriding does not apply to
Overloading class. constructors.

Static Binding vs. Dynamic Binding

Aspect Static Binding Dynamic Binding

The method call is resolved at compile


Definition The method call is resolved at runtime.
time.

Examples Method Overloading, Static Methods Method Overriding, Virtual Methods

Performance Faster, as it happens at compile time. Slower, as it happens at runtime.

Less flexible, as the decision is made More flexible, as the decision is made
Flexibility
during compilation. during execution.

Method Method binding happens once during Method resolution occurs each time a
Resolution compilation, reducing runtime overhead. method is called, adding runtime overhead.

Inheritance vs. Polymorphism

Aspect Inheritance Polymorphism

Mechanism to create a new class using Mechanism that allows objects of different
Definition properties and behaviors of an existing classes to be treated as objects of a common
class. superclass.

To promote code reuse and establish a To allow methods to do different things based
Purpose
relationship between classes. on the object it is acting upon.

Class Inheritance (e.g., Dog inherits


Examples Method Overloading, Method Overriding
from Animal)

Enables dynamic method resolution and


Usage Enables creation of a class hierarchy.
behavior.

Polymorphism is a concept applied to


Inheritance is a relationship between
Relationship methods, allowing for flexibility and
classes.
abstraction.

Best Practices
When to Use Method Overloading: Use it when you need multiple methods with similar functionality
but different parameters.

When to Use Method Overriding: Use it to provide specific implementations of methods defined in a
parent class.
6/7
Polimorphism.md 2024-08-15

How to Design a Class Hierarchy with Polymorphism in Mind: Plan your class hierarchy to take
advantage of polymorphism by defining base classes with methods that can be overridden in derived
classes.

Conclusion
Summary of Key Concepts

Polymorphism allows objects to be treated as instances of their parent class, enabling method overloading
and overriding. It

enhances code flexibility, reusability, and maintainability.

Real-World Applicability

Polymorphism is widely used in Java to design robust and adaptable systems by leveraging method
overloading and overriding to handle various behaviors through a unified interface.

7/7

You might also like