登录
首页 >  文章 >  java教程

Java 中@Override 的作用是什么?

来源:dev.to

时间:2024-12-27 13:25:00 245浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习文章相关编程知识。下面本篇文章就来带大家聊聊《Java 中@Override 的作用是什么?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

Java 中@Override 的作用是什么?

当我们扩展一个类并实现父类的方法时,为什么要使用@override注解?如果我们不使用它会发生什么?即使程序编译了还需要吗?这些可能是一些与java中是否使用@override注解相关的问题。

java中的@override是什么?

@override 注解是一个 java 注解,用于指示子类的方法正在重写其超类的方法。也就是说,它用于确保我们要重写的方法实际上存在于超类中。如果不存在,编译器将抛出错误。这是 @override 注解的一般定义,尽管我们将在下面看到更多细节。

我们的 animal 类有两个方法:sound 和 eat,这两种方法都通过控制台打印通用消息。我们可以创建一个实例来验证这些方法的行为。

public class animal {
    public void sound() {
        system.out.println("generic animal sound");
    }

    public void eat() {
        system.out.println("generic animal eating");
    }
}
public static void main(string[] args) {
    animal animal = new animal();
    animal.sound(); // generic animal sound
    animal.eat(); // generic animal eating
}

接下来,我们有 cat 类,它扩展 animal 并重写这两个方法以打印来自猫的特定消息,考虑到 @override 注释未在任何方法中使用。

public class cat extends animal {
    public void sound() {
        system.out.println("meow meow");
    }

    public void eat() {
        system.out.println("cat is eating");
    }
}

在 cat 类中,ide 本身会向我们显示一个警告,指示有必要在每个重写方法之前添加 @override 注释,到目前为止一切顺利,如果我们创建该类的实例并且调用方法,程序将编译并运行没有问题。

public static void main(string[] args) {
    animal animal = new cat();
    animal.sound(); // meow meow
    animal.eat(); // cat is eating
}

ide本身指示应该使用@override注解的原因是因为该注解允许我们验证我们要重写的方法是否确实存在于超类中并且是否被正确扩展。

例如,如果将 sound 方法更改为 sound,则没有任何警告我们超类方法没有被覆盖。考虑到这一点,如果我们再次运行前面的示例,将执行的声音方法将是 animal 超类的方法。

public class cat extends animal {
    public void soound() {
        system.out.println("meow meow");
    }

    public void eat() {
        system.out.println("cat is eating");
    }
}
public static void main(string[] args) {
    animal animal = new cat();
    animal.sound(); // generic animal sound
    animal.eat(); // cat is eating
}

这是一个问题,因为代码的行为不符合预期,并且查找错误可能需要一些时间。另一方面,如果每个方法都有 @override 注解,这不会代表问题,因为编译器会自动抛出一个错误,表明我们要重写的方法在超类中不存在,并且 ide 本身会显示警告

public class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("Meow meow");
    }

    @Override
    public void eat() {
        System.out.println("Cat is eating");
    }
}

@override 的目的不仅是声明意图表达,还可以帮助在编译时检测错误并确保代码按预期运行,为程序员提供安全性和信心。因此,每当重写超类的方法时,最好使用注释,即使程序编译没有问题。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>