---
title: "Annotations in Java: @Override and @SuppressWarning"  
description: "In the previous posts, we have learnt what annotations are and why we use these annotations in java program codes. We have learnt the use and demonstr"  
author: "Jonas Stuart"  
published: 2016-05-28  
updated: 2019-01-22  
canonical: https://www.mindstick.com/articles/12138/annotations-in-java-override-and-suppresswarning  
category: "java"  
tags: ["java"]  
reading_time: 3 minutes  

---

# Annotations in Java: @Override and @SuppressWarning

In the previous posts, we have learnt what [annotations in java](https://www.mindstick.com/blog/11132/annotations-in-java-why-we-use-annotations) are and why we use these annotations in java program codes. We have learnt the use and demonstration of **@Deprecated** annotation. Now here we learn the other two very helpful and important annotation called **@Override and @SuppressWarning**\

##### The @Override Annotation

The **@Override** annotation indicates that the annotated method is required to override a method in its superclass. If it does not do so, the compiler will flag an error. We discuss the importance of this annotation after looking at the code illustrated here:

```
public class OverrideAnnotationDemoApp {
                     public static void main(String[] args) {                             Cat c = new Cat();                             c.saySomething();                     }
}
class Animal {
                     void saySomething() {
                             System.out.println("Animal talking");                     }
}
class Cat extends Animal {
                     @Override                     void saySomething() {                             System.out.println("meow... meow");                     }
}
```

Here, the Animal class defines one method called **saySomething**. Cat is a subclass of Animal that redefines the method’s implementation. In the subclass definition, we mark this method with the **@Override** annotation. When we compile this code, it compiles without any warnings and errors, which is good. Now let’s take out the @Override line from the source and recompile the code.

It again compiles without any errors. So what’s the use of the **@Override** annotation? To find out, let’s now modify the method name in the Cat definition to **saySomethng**—a simple spelling mistake. Now, let’s once again compile the code. The code compiles without errors. However, when we run the code, we see the following output:

Animal talking

What happened here? We were expecting the cat to say “meow… meow.” Such types of errors are hard to find, and programmers have spent many sleepless nights on such trivial-looking errors. Okay, now let’s add the @Override annotation, as before, and recompile the code. Now the compiler throws the following error to the terminal:

```
OverrideAnnotationDemoApp.java:22: method does not override or implement a method from a supertype
@Override
^1 error
```

Now, we would probably know that we do not have an overridden method that matches the signature of a method in its superclass. We can easily save ourselves a lot of valuable time by marking those methods we are overriding in a subclass with the @Override annotation.

##### The @SuppressWarnings Annotation

The use of this annotation tells the compiler not to spit out the specified warnings in its output. To understand its use, let’s go back to our **DeprecatedAnnotationDemoApp** program. The compilation of this program gives us the method deprecation warning we observed earlier. Now, add the following line before the main function declaration:

@SuppressWarnings({"deprecation"})

public static void main(String[] args) {

Save the file and recompile the code. The deprecation warning error vanishes from the output.We can use this feature judiciously to avoid cluttering the compiler output with unwanted messages.

---

Original Source: https://www.mindstick.com/articles/12138/annotations-in-java-override-and-suppresswarning

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
