Java @Override

简介: 1. 概述2. @Override用与不用,都会覆盖3. 实践是检验真理的唯一标准,@Override不是那么玩的

1. 概述

有时候会很奇怪的发现哦,@Override这个注解有点不讲道理,有时候写它也没问题,不写他也没问题,都不会有错误或者警告信息。


对于天生喜欢抽象和联想的程序猿来说,很容易产生这样的联想,Override的意思不是覆盖么,加上@Override这个注解的意思应该是覆盖父类的方法吧,哈哈,天才!


然而不是的,用个例子说明下:


2. @Override用与不用,都会覆盖

不用的示例:

package org.maoge.annotationdemo;
//用于演示的父类
public class Father {
  public void sayHello(){
    System.out.println("Father say hello");
  }
}
package org.maoge.annotationdemo;
//用于演示的子类
public class Son extends Father{
  //注意,此处覆写了sayHello,没用@Override,也没有任何错误提示和警告信息
  public void sayHello(){
    System.out.println("Son say hello");
  }
  public static void main(String[] args) {
    Father son=new Son();
    son.sayHello();//输出Son say hello,覆盖成功
  }
}

用的示例,父类不变

package org.maoge.annotationdemo;
//用于演示的子类
public class Son extends Father{
  //注意,此处覆写了sayHello,用了@Override,同样没有任何错误提示和警告信息
  @Override
  public void sayHello(){
    System.out.println("Son say hello");
  }
  public static void main(String[] args) {
    Father son=new Son();
    son.sayHello();//输出Son say hello,同样覆盖成功
  }
}

3. 实践是检验真理的唯一标准,@Override不是那么玩的

@Override并不是表示该方法去覆盖父类方法,而是仅仅提供一种提示功能,保证加了@Override肯定覆盖了父类的方法,以免程序猿觉得自己明明覆盖了,咋还有这种低级错误发生。说的太复杂,一个例子就清楚了。

package org.maoge.annotationdemo;
public class Son extends Father{
  @Override
  public void say_hello(){//报错:The method say_hello() of type Son must override or implement a supertype method
    System.out.println("Son say hello");
  }
  public static void main(String[] args) {
    Father son=new Son();
    son.sayHello();//输出Son say hello,同样覆盖成功
  }
}

到了展示英文功力的时候了,The method say_hello() of type Son must override or implement a supertype method的意思是,这个叫say_hello的方法啊,它是Son类的方法啊,它啊,必须滴覆盖或者落实一个它老爸的方法。


到了这里就很明确了,用了@Override的方法,必然是一个覆盖了父类的方法,不然编译器都不让你过。儿子得保证把爸爸的技能学到手,心里有数才能出师。

相关文章
|
3月前
|
Java 编译器 数据安全/隐私保护
Java 重写(Override)与重载(Overload)详解
在 Java 中,重写(Override)和重载(Overload)是两个容易混淆但功能和实现方式明显不同的重要概念。重写是在子类中重新定义父类已有的方法,实现多态;重载是在同一类中定义多个同名但参数不同的方法,提供多种调用方式。重写要求方法签名相同且返回类型一致或为父类子类关系,而重载则关注方法参数的差异。理解两者的区别有助于更好地设计类和方法。
334 1
|
6月前
|
Java 编译器
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
在 Java 中,重写(Override)和重载(Overload)是两种不同的概念,用于实现多态性。它们有着不同的作用和使用场景。
|
7月前
|
Java
【Java开发指南 | 第二十五篇】Java 重写(Override)与重载(Overload)
【Java开发指南 | 第二十五篇】Java 重写(Override)与重载(Overload)
55 1
|
7月前
|
Java
【JAVA学习之路 | 基础篇】方法的重写(Override)
【JAVA学习之路 | 基础篇】方法的重写(Override)
|
Java 编译器
Java重写(Override)&重载(Overload)
重写(Override)概述 Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的子类,其中 Cat 类继承了 Animal 类。Animal 类中有一个名为 move() 的方法,Cat 类可以对这个方法进行重写。 Animal 类中的 move() 方法不是private 类型,因此它可以被其子类重写。在 Cat 类中,使用相同的名称和参数列表来重新定义了 move() 方法,并且使用 @Overrid
177 0
|
7月前
|
Java
Java重写(Override)与重载(Overload)
Java重写(Override)与重载(Overload)
|
7月前
|
Java 编译器
【Java 方法重写】@Override 注解,一般用法,重写的具体要求
【Java 方法重写】@Override 注解,一般用法,重写的具体要求
430 0
|
7月前
|
Java 编译器
【JAVA】关于重写(Override)与重载(Overload)
【JAVA】关于重写(Override)与重载(Overload)
133 0
|
Java 编译器 程序员
Java 的重载(overload)和重写(override)
重载和重写都是面向对象编程中的概念,但我们或许还听说过一种叫做覆写(overwrite)的概念。C++ 是拥有这个概念的,Java 只有 overload 和 override,Python 只有隐式的 overload 和 override,没有 overwrite 的概念。在重载(overload)、重写(override)和覆写(overwrite)中,我们一般对前面两个比较熟悉,对最后一个会略微陌生一些。
213 1