Overriding in Java allows a subclass to provide a specific implementation for a method that is already defined in its superclass. This is a key feature in object-oriented programming that allows for dynamic method dispatch, enabling polymorphism. When a method in a subclass has the same name, return type, and parameters as a method in its superclass, the method in the subclass overrides the method in the superclass.
class Animal {
void makeSound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myDog = new Dog();
myAnimal.makeSound(); // Outputs: Animal makes a sound
myDog.makeSound(); // Outputs: Dog barks
}
}