Understanding Method Resolution Order (MRO)

1 minute read

Method Resolution Order (MRO) is a crucial concept in programming languages that support inheritance, such as Java. It determines the order in which methods are resolved in a class hierarchy. In this tutorial, we’ll explore Method Resolution Order in the context of Java, its significance, and provide examples to illustrate its behavior.

Understanding Inheritance in Java

In Java, inheritance allows a class (subclass) to inherit properties and behaviors from another class (superclass). This promotes code reuse and facilitates the creation of hierarchical relationships between classes.

Overview of Method Resolution Order (MRO)

Method Resolution Order (MRO) in Java refers to the order in which methods are searched for and invoked in a class hierarchy during runtime. It follows a specific algorithm to determine which method implementation to use when a method is called on an object.

Example Illustration of Method Resolution Order

Let’s illustrate Method Resolution Order with an example in Java:

// Superclass
class Animal {
    void eat() {
        System.out.println("Animal is eating...");

// Subclass inheriting from Animal
class Dog extends Animal {
    void bark() {
        System.out.println("Dog is barking...");

// Another subclass inheriting from Dog
class Labrador extends Dog {
    void color() {
        System.out.println("Labrador is brown in color.");

// Main class
public class Main {
    public static void main(String[] args) {
        Labrador labrador = new Labrador();
        labrador.eat(); // Inherited method from Animal class
        labrador.bark(); // Inherited method from Dog class
        labrador.color(); // Method from Labrador class

In this example:

  • We have three classes: Animal, Dog, and Labrador.
  • Class Dog extends Animal, and class Labrador extends Dog.
  • When labrador.eat() is called, Java follows the Method Resolution Order to determine which eat() method implementation to use.

Method Resolution Order (MRO) in Java

In Java, the Method Resolution Order follows a straightforward approach called “Depth-first Search (DFS)”. It starts from the current class and traverses up the class hierarchy, looking for the method implementation. If multiple classes define the same method, the one closest to the subclass in the inheritance hierarchy is chosen.


In conclusion, Method Resolution Order (MRO) is a critical aspect of inheritance in Java programming. It governs the order in which methods are resolved in a class hierarchy, ensuring the correct method implementation is invoked during runtime. Understanding MRO is essential for writing efficient and maintainable Java code.