QA Interview Handbook
  • ๐Ÿ Home Page
  • About Testing
    • ๐Ÿ’–Qualities of A Great Tester
  • Manual Testing
    • ๐Ÿ’กOverview
      • โœ‹Demand for Software Testing
      • ๐Ÿ˜„Tester's Role in Manual Testing
      • 7๏ธTesting Principles
      • ๐ŸšจV & V
      • โ”Interview Questions
    • โ™ป๏ธSDLC
      • ๐Ÿ“’Phase 1: Planning
      • ๐Ÿ”Phase 2: Requirement Analysis
      • ๐Ÿ‘”Phase 3: Design
      • โ›‘๏ธPhase 4: Development
      • ๐ŸงชPhase 5: Testing
      • ๐ŸššPhase 6: Deployment
      • ๐Ÿ–ฑ๏ธPhase 7: Maintenance
      • โš”๏ธCommon Challenges
      • โ”Interview Questions
    • ๐ŸŒ€STLC
    • ๐ŸŒŠWaterfall
    • โœณ๏ธAgile
      • ๐Ÿ˜Tester's Role in Scrum
    • ๐Ÿ”ขTypes
      • โฌœWhite Box Testing
      • โฌ›Black Box Testing
        • ๐Ÿ”ฐTechniques Used in Black Box Testing
        • ๐Ÿš˜Functional Testing
          • 1๏ธโƒฃUnit Testing
          • 2๏ธโƒฃIntegration Testing
            • ๐Ÿ”ฐTechniques Used in Integration Testing
          • 3๏ธโƒฃSystem Testing
            • ๐Ÿ“ผTypes of System Testing
            • ๐ŸŒŠPhases of System Testing
            • ๐ŸŒ€Regression Testing
            • ๐ŸŒซ๏ธSmoke Testing
          • 4๏ธโƒฃAcceptance Testing
            • โš™๏ธUser Acceptance Testing
            • ๐Ÿ…ฐ๏ธAlpha Testing
            • ๐Ÿ…ฑ๏ธBeta Testing
        • ๐Ÿ•ณ๏ธNon Functional Testing
      • ๐Ÿ“‘Grey Box Testing
    • ๐Ÿช„User Story
      • โบ๏ธSample User Stories
    • ๐Ÿ““Test Cases
      • โบ๏ธSample Test Cases
      • โ”Interview Questions
    • โœ–๏ธDefect Life Cycle
      • โ˜ฃ๏ธPriority + Severity
      • โบ๏ธSample Defect Reports
      • โ”Interview Questions
      • ๐Ÿ›Buggy Questions
    • ๐ŸŒAtlassian JIRA
      • ๐ŸžJIRA Issues
      • โ”Interview Questions
    • โ”Interview Questions
  • Accessibility Testing
    • ๐Ÿ’กOverview
    • ๐Ÿค“Tester's Role in Accessibility Testing
    • ๐Ÿ“šWCAG Principles
      • ๐Ÿ‘๏ธPerceivable
      • ๐ŸนOperable
      • ๐Ÿง Understandable
      • ๐Ÿค–Robust
    • ๐Ÿ”งAxe DevTools
      • โ”Interview Questions
    • ๐Ÿ““Test Cases
    • โ”Interview Questions
  • API Testing
    • ๐Ÿ’กOverview
    • ๐Ÿ˜€Tester's Role in API Testing
    • ๐ŸŠHTTP Methods & CRUD
      • ๐Ÿ‚HTTP Status Codes
    • ๐ŸAPI Tools
      • ๐ŸŸ Postman
        • โ˜„๏ธSending your first API request
        • ๐Ÿ”ฌHTTP Requests with Java
        • ๐ŸŽฒGitHub Sample
        • โ”Interview Questions
      • โ›‘๏ธREST Assured
        • ๐ŸŽ‡Dependency
        • โ”Interview Questions
    • ๐Ÿ““Test Cases
    • ๐ŸฆงAPI Cheatsheet
    • โ”Interview Questions
  • Database Testing
    • ๐Ÿ’กOverview
    • ๐Ÿ˜†Tester's Role in Database Testing
    • ๐Ÿ”ตSQL
      • โ›“๏ธConstraints
      • ๐Ÿ›ข๏ธReferencing a Column
      • ๐Ÿ”ผDDL Commands
      • ๐Ÿ”ผDML Commands
        • ๐Ÿ–Œ๏ธOperators
        • ๐Ÿ› ๏ธFunctions
          • โฏ๏ธAggregate Functions
        • ๐ŸŽ…Clauses
          • โซJoin Clauses
          • ๐Ÿ”ตFilter Clauses
          • โฌSet Operations
      • ๐ŸƒWildcard Character
      • โ”Interview Questions
    • ๐Ÿ““Test Cases
    • ๐ŸงคSQL Practice Sites
    • ๐ŸซSQL Cheatsheet
    • โ”Interview Questions
  • Java
    • โ›ฉ๏ธIntroduction
    • ๐Ÿ˜„Tester's Reason to Learn Java
    • โ“‚๏ธMain Method
      • โ”Interview Questions
    • ๐Ÿ“Variables & Types
      • ๐ŸชขSpecial Types
    • ๐ŸฅModifiers
    • ๐Ÿ…พ๏ธOperators
    • ๐ŸชกString
      • ๐ŸฉบString Methods
        • String Method Problems
      • ๐ŸšจDelimiter
      • โ”Interview Questions
    • ๐Ÿ–‡๏ธConditionals
      • ๐Ÿ’ŽCommon If Statements
      • ๐Ÿ’ŽCommon Ternary Operator Statements
    • โ“‚๏ธMath Class
    • ๐ŸŒŠLoops
      • ๐Ÿ’ŽCommon Loop Examples
      • ๐Ÿ”ƒNested For Loops
    • ๐ŸผOOPS
      • ๐Ÿ›๏ธClasses and Objects
        • โ”Interview Questions
      • ๐ŸŽƒConstructor
        • โšกStatic
          • โ”Interview Questions
        • ๐Ÿ“This() & Super()
          • โ”Interview Questions
        • ๐Ÿ€Finalization
      • ๐Ÿ”“Encapsulation
      • ๐ŸฅInheritance
      • ๐Ÿฆ‹Polymorphism
      • ๐Ÿ•ธ๏ธAbstraction
    • ๐ŸฎJava Practice Sites
    • โ˜‘๏ธData Structures + Algorithms
      • ๐Ÿ…พ๏ธBig O
      • โ˜‘๏ธData Structures
        • ๐Ÿ”ธArray
        • ๐Ÿ”ณArray Problems
        • Page
      • ๐ŸชŸSliding Window Technique
        • ๐ŸชŸSliding Window Problems
        • ๐ŸฅLeetCode #53
        • ๐ŸฅLeetCode #209
    • โ”Interview Questions
  • Automation Testing
    • ๐ŸšฐFlow
      • ๐Ÿ’กOverview
      • ๐ŸคฉTester's Role in Automation Testing
      • ๐Ÿ€Selenium
        • ๐Ÿ•ธ๏ธSelenium WebDriver
          • ๐Ÿ•ท๏ธWebDriver Commands
            • ๐ŸŒWebElement
              • ๐Ÿ”†HTML Tags
              • ๐Ÿ”ฌFind Element(s)
              • ๐ŸฆŽLocators
                • โŒXpath
                • ๐ŸฐCSS Selector
                • ๐Ÿ“€DOM
                • ๐Ÿ Quick Reference for XPath + CSS
            • โœ‹Waits
            • Browser Management
            • ๐ŸŽ๏ธNavigation
            • Alerts
          • ๐Ÿท๏ธAdvanced User Interactions
            • ๐Ÿ—ฏ๏ธAction vs. Actions
            • ๐Ÿ’งDrop Down
            • โœ…Check Box
            • ๐Ÿ–‡๏ธForms
          • โš ๏ธExceptions
        • ๐ŸOOPS + Selenium
        • ๐ŸšขFrameworks
          • โš“Module Based Framework
          • ๐ŸŽนKeyword Driven Framework
          • ๐ŸŽ‹Data Driven Framework
          • ๐ŸŒบHybrid Framework
          • ๐ŸŒดLog4j
          • ๐Ÿ“„Page Object Model
        • ๐ŸงชTesting Frameworks
          • ๐Ÿ’กTestNG
          • ๐Ÿ‰‘JUnit
          • ๐Ÿฅ’BDD
            • ๐Ÿฅ’Cucumber
        • ๐ŸŒ‰Selenium Grid
          • โœ–๏ธDesired Capabilities
        • โ”Interview Questions
      • ๐Ÿ”„API Testing with Selenium
      • โชDatabase Testing with Selenium
      • โ“‚๏ธMaven
      • ๐Ÿ™Git
        • โ”Interview Questions
      • ๐Ÿ•ต๏ธโ€โ™‚๏ธJenkins
        • โ”Interview Questions
      • ๐ŸณDocker
        • โ”Interview Questions
      • ๐Ÿ“™AWS
        • โ”Interview Questions
  • Behavioral
    • ๐Ÿ“ฃMixed Interview Questions
    • โญSTAR Method
      • ๐ŸŒŸSample Responses
Powered by GitBook
On this page
  • ๐Ÿฆ‹ What is Polymorphism?
  • ๐Ÿ‘ฅ Method Overloading
  • ๐ŸŽญ Method Overriding
  • ๐Ÿ“‹ Rules for Polymorphism in Java ๐Ÿ“‹
  • โš–๏ธ Rules for Method Overloading โš–๏ธ
  • ๐Ÿ—๏ธ Rules for Method Overriding ๐Ÿ—๏ธ
  • ๐Ÿ”€ Key Notes
  • ๐Ÿ’ก In Simple Terms

Was this helpful?

  1. Java
  2. OOPS

Polymorphism

PreviousInheritanceNextAbstraction

Last updated 1 year ago

Was this helpful?

๐Ÿฆ‹ What is Polymorphism?

Polymorphism means "many forms". It allows objects to be accessed in many different ways, depending on their type.

In Java, polymorphism manifests in two primary forms:

  1. Method overloading

  2. Method overriding

๐Ÿ‘ฅ Method Overloading

Method overloading allows different methods to have the same name, as long as they have different signatures.

public class Math {

  public int add(int a, int b) {
    return a + b; 
  }
  
  public double add(double a, double b) {
    return a + b;
  }

}

public class Main {

  public static void main(String[] args) {

    Math math = new Math();
    
    int sum1 = math.add(5, 10); 
    double sum2 = math.add(1.5, 2.5);
    
    System.out.println(sum1); // 15
    System.out.println(sum2); // 4.0
    
  }

}

This allows the add method to be used in different ways based on the parameters passed. The compiler can differentiate between the methods based on the number and type of arguments.

Method overloading is a key aspect of polymorphism in Java. It allows the same method name to be used flexibly for multiple scenarios.

๐ŸŽญ Method Overriding

Method overriding occurs when a child class provides its own implementation of a method already defined in the parent class.

public class Animal {

  public void makeSound() {
    System.out.println("Generic animal sound"); 
  }

}

public class Cat extends Animal {

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

}

public class Main {

  public static void main(String[] args) {  
    Animal animal = new Cat();
    animal.makeSound();
  }

}

Output:

Meow

This allows subclasses like Cat to give their own specific implementations, maintaining polymorphic behavior. Even though animal is declared as the parent Animal class, it prints "Meow" based on the overridden method in the Cat subclass.

๐Ÿ“‹ Rules for Polymorphism in Java ๐Ÿ“‹

Polymorphism in Java works through following certain rules around method overloading and overriding.

โš–๏ธ Rules for Method Overloading โš–๏ธ

Method overloading has the following rules:

  • The methods must have the same name

  • The parameters must be different - different number of parameters, different types, or both

  • The return type can be different

  • Overloaded methods can throw different exceptions

For example:

public class Main {

  public int add(int a, int b) {
    return a + b;
  }
  
  public double add(double a, double b) {
    return a + b;
  }

}

The add() method is overloaded by having different parameter types.

๐Ÿ—๏ธ Rules for Method Overriding ๐Ÿ—๏ธ

Some key rules for method overriding are:

  • The method must have the same signature (name + parameters)

  • The return type must be the same or a subclass

  • The access modifier cannot be more restrictive than the parent

  • The overridden method can throw only the same or subclass exceptions

For example:

public class Vehicle {

  public String getName() {
    return "Vehicle";
  }

}

public class Car extends Vehicle {

  @Override 
  public String getName() {
    return "Car"; 
  }

}

The getName() method is properly overridden in Car by having the same method signature and return type.

So polymorphism works by following these rules around overloading and overriding methods in Java.

๐Ÿ”€ Key Notes

  • Polymorphism allows one thing to be accessed in different forms

  • Method overloading has the same method name but different signatures

  • Method overriding provides specific implementations in subclasses

  • Polymorphism enables very reusable and extendable code

So in essence, polymorphism allows dynamic and flexible programming!

๐Ÿ’ก In Simple Terms

Polymorphism allows things like methods to take on different forms and behaviors based on specific object types. It enables code reuse and extendability.

Like a shape that can be a circle, square or triangle polymorphically. Same shape, different forms!

๐Ÿผ
๐Ÿฆ‹