覆盖 @override

Posted runrua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了覆盖 @override相关的知识,希望对你有一定的参考价值。

覆盖,简单来说就是把父类中的某个方法复制过来。需要注意几点:

  • 形参的类型、个数要与父类一致;
  • 返回值类型分几种情况:
      • 父类返回值是void,子类也是void;
      • 如果是基本数据类型或者包装类则要与父类完全相同,比如父类返回值类型是 int型,则子类也必须是 int型。父类返回值类型是 Integer,则子类也要是Integer;
      • 如果是其他类型的话,子类的返回值类型可以是父类返回值类型的子类(包括本身),比如父类返回值类型是Object,子类返回值类型可以是Object或者String。

方法体可以重写,也可以继承父类方法体。需要继承就在子类的方法体内使用super。比如父类有一个方法为:

//父类方法
public void sayHello(String name) 
    System.out.println("Hello! " + name)

子类需要继承父类方法的话可以这样写:

1 @override //@override注解可以显式地指出这是一个覆盖方法,另外可以让编译器帮自己检查是否正确地覆盖了父类中的方法。当然也可以不用写。
2 public void sayHello(String name) 
3     //继承父类方法(也可以写在子类方法的下面)
4     super.sayHello(name); 
5     //子类自己的方法
6    System.out.println(name + ", Hello!");
7 

因为Java中形参是没有默认值的,所以子类覆盖方法形参的个数需要与父类相同,在python中形参的个数是可以与父类中不同的,当然前提是其他形参都得有默认值????

以上是关于覆盖 @override的主要内容,如果未能解决你的问题,请参考以下文章

php [Php - Phpoffice Override]覆盖PHPOffice\PHPWord类以从HTML代码生成docx文件。当orde时,这个生成正确的数字

Wsuggest-override 发出警告,即使存在覆盖

C#基础-方法的重写(new)和覆盖(override)

Class.override() 与 Ext.define('Class', override: 'Class' ... 创建覆盖之间的区别 [重复]

片段布局不覆盖整个屏幕

@Override 方法不会覆盖它的超类