If any class (subclass) has the same methods as its parent class then it’s called a Method Overriding Java. In subclass(child class) override methods are shown with @override Java annotation.
Methods overriding is also called runtime polymorphism in Java. It’s achieved by an Inheritance a one of Object-Oriented Programming (OOps) concept.

In this tutorial, you will learn about What is Methods Overriding and How to use it with some basic examples in Java.
Overriding Syntax
A Simple syntax of Java Overriding.
class ParentClass {
//method
.....
}
class SubClass extends ParentClass{
@Override
//method
.....
}
class SubClass extends ParentClass{
@Override
//method
.....
}
Complete Java overriding example
How to do methods overriding in java? Here is below an example of Overriding a salary() Method in a subclass.
//base class
class Employee {
//method
void salary() {
System.out.println("All Employee Salary Range is 10-50k");
}
}
//subclass
class Manager extends Employee{
@Override
void salary(){
System.out.println("Manager Salary is 40k");
}
}
public class MethodOverriding {
public static void main(String arg[]){
// creating base (parent) class object
Employee employee = new Employee();
employee.salary();
// creating sub (child) class object
Employee employee1 = new Manager();
employee1.salary();
}
}
Output: All Employee Salary Range is 10-50k
Manager Salary is 40k
When to apply Override Java in methods?
Here is a complete and real-time example of “Override Java”.
In every company, there is a different salary according to the position. So we are defining salary() methods that are overridden. A class Manager and team lead extend (inherit) in the Employee class.

Code:
//base class
class Employee {
//method
void salary() {
System.out.println("All Employee Salary Range is 10-50k");
}
}
//subclass
class Manager extends Employee {
@Override
void salary() {
System.out.println("Manager Salary is 40k");
}
}
//subclass
class TeamLead extends Employee {
@Override
void salary() {
System.out.println("Team Lead Salary is 30k");
}
}
public class MethodOverriding {
public static void main(String arg[]) {
// creating base (parent) class object
Employee employee = new Employee();
employee.salary();
// creating sub (child) class object
Employee employee1 = new Manager();
employee1.salary();
// creating sub (child) class object
Employee employee2 = new TeamLead();
employee2.salary();
}
}Output: All Employee Salary Range is 10-50k
Manager Salary is 40k
Team Lead Salary is 30k
Usage of Java Method Overriding
- A specific statement of superclass methods in the subclass. This means in a subclass you can write your own statement (code) to do the operation.
- To achieve a Runtime polymorphism
Rules for Java Method Overriding
- The subclass method must have the same name as in the parent class.
- Overridden methods parameters(argument) must be the same as parent class methods.
- Required an IS-A relationship (inheritance).
- The return type should be the same as the parent class.
- An access level of methods can’t be more restrictive. Example – If the superclass method is declared public then the overriding method in the subclass can’t be either private or protected.
- Final methods can’t be overridden.
- Static methods can’t be overridden but can be re-declared.
- Constructors can’t be overridden.
Why and When super Keyword is used in java overriding?
Answers: When you want a use superclass method in the subclass and that same methods already overridden in a subclass. Here is an example of how to use super keyword in java overriding.
//super class
class Office {
//method
void workHour() {
System.out.println("All Employee Work Hour is 5 to 8 Hour");
}
}
//sub class
class Manager extends Office {
@Override
void workHour() {
super.workHour();
System.out.println("Manager working for 20 hours a day");
}
}
public class MethodOverriding {
public static void main(String arg[]) {
// creating base (parent) class object
Manager manager = new Manager();
manager.workHour();
}
}
Output: All Employee Work Hour is 5 to 8 Hour
Manager working for 20 hours a day
Question: When do you use Java’s @Override annotation and why?
Answers: Override java annotation Use it every time when you override a method. here is we are mentioning 2 reasons or benefits of it.
- By doing you can take advantage of compiler checking your methods actually are overridden. You can prevent a common mistake of misspelling a method name or not correctly matching the parameters. IDE will show you an error that does not actually a problem in method override.
- Secondly, it makes your code easier to understand, easily can find this method is overridden.
Question: Does constructor Overriding in Java possible?
Answers: No, constructor Overriding is not possible because JVM will call the superclass constructor while creating the child class instance.
Whenever a subclass instance created the base class constructor invoked. Then continue with the subclass constructor statements.
Java Constructors are not methods that can be overridden.
Question: Can you override the java main method?
Answers: No, you can’t override the main method in Java because it’s a static method.
Question: Why Java is not allowed to Override Static methods?
Answers: Java Static methods are treated as global by the JVM, there are not bound to an object instance at all.
Question: Can you override a static method?
Answers: No, a static method can’t be overridden in Java. Because Overriding is an example of run-time polymorphism.
Do comment if you have any doubts and suggestions below.
Note: This example (Project) is developed in IntelliJ IDEA 2018.2.6 (Community Edition)
JRE: 11.0.1
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.1Java version 11
All Method Overriding Java Examples are in Java 11, so it may change on different from Java 9 or 10 or upgraded versions.