string-java中如果重载函数前不加@Override会怎么样?

问题描述

java中如果重载函数前不加@Override会怎么样?

比如重载toString函数,若前面不加那个@Override后果是什么?就不重载了?

 @Override
    public String toString()
    {
        return description;
    }

解决方案

1.帮助自己检查是否正确的复写了父类中已有的方法

2.告诉读代码的人,这是一个复写的方法

关于第一点,我给你再说明一下:
假设你现在要覆盖一个方法,然后因为你粗心,写错了参数的类型,刚好你又没有写@override注解,那么编辑器(eclipse)就不会提示你。
这时候就产生了一个隐藏的bug,明明是准备复写方法,结果却是重载了方法。

// 父类的方法:
public void test(int i) {
    System.out.println(i);
}

// 子类重写

// 第一种写法,正确
@Override
public void test(int i) {
    System.out.println(i + 1);
}

// 注意:这里因为人为粗心导致 i 的类型写成 float,没有写@Override注解,编辑器不会报错,那这里方法覆盖就变成了方法重载。
public void test(float i) {
    System.out.println(i + 1);
}

解决方案二:

java关于函数重载(overload)和函数覆盖(override)区别

解决方案三:

注意是覆盖不是重载,不写没有关系,这个注解作用一个是明确覆盖父类函数,二是会主动校验是否覆盖正确(入参、返回值等),建议写上,养成良好习惯~

解决方案四:

不写这个的话,就是你自己定义的方法了,跟父类没有关系,但是写了就跟父类有关系了。比如重写toString(),equals(),hashCode()这几个方法,
都要有@Override这个关键字的。

解决方案五:

@Override是重写,不是重载!要是重写java系统里边类的方法,都要加上@Override,要是重写自定义的父类的方法,可以不加!
但是一般代码规范的话,都要加上!

解决方案六:

http://zpointer.iteye.com/blog/1066992

解决方案七:

eclipse默认在重写的时候不懈@Override会报错,但是可以再属性中的java compliler -> Errors/Warnings中设置,可以设置成不写@Override只提示
警告或者无视,但是为了养成一个良好的代码习惯,还是推荐都加上吧!

解决方案八:

@override是重写,不是重载

时间: 2025-01-02 08:19:06

string-java中如果重载函数前不加@Override会怎么样?的相关文章

对象-Java中子类重载的问题

问题描述 Java中子类重载的问题 比如我现在又两个具有继承关系的类: 父类:Animal 子类:Dog 在父类中有一个方法eat() 在子类中,除了继承了父类的eat()方法外,我自己还写了一个eat()的重载方法:eat(String a) 然后创建对象: Animal a = new Dog(); 为什么在创建对象a后,调用eat方法时,不能调用eat(String a)方法,而只能调用eat()方法? 解决方案 我是初学者,我说说自己的理解哈.一个是eat(),一个是eat(String

java中的主函数后的定义语句

问题描述 java中的主函数后的定义语句 新人初学java,请各位多多指教 在学习反射这一块的时候,遇到这样一个问题,之前已经导过java.lang包 然后在主函数的后面有这样一些语句,不懂,还望各位多多指教 public static void main(String[] args)throws SecurityException, NoSuchMethodException,IllegalArgumentException, InstantiationException,IllegalArg

无-用java中的setRGB()函数处理像素时,像素值与处理结果一样,这是怎么回事?

问题描述 用java中的setRGB()函数处理像素时,像素值与处理结果一样,这是怎么回事? int rgb1=((allRGB[i][x+1][3]* 256 + allRGB[i][x+1][4]) * 256) + allRGB[i][x+1][5]; bimageIO[i].setRGB(allRGB[i][x+1][0]allRGB[i][x+1][1] rgb1);其中allRGB[i][x+1][0]图像的x坐标其中allRGB[i][x+1][1]图像的y坐标

C语言string.h中常用字符函数介绍

strcpy 函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *strcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strcpy(string, str1); printf("%s\n",

java中 一个 构造 函数如何 调用 令外 一个 构造 函数

问题描述 如题! 解决方案 解决方案二:this.XXX()解决方案三:this(xxx...)解决方案四:this.XXX()解决方案五:引用2楼jimyx123的回复: this(xxx...) 用这个解决方案六:我错了........解决方案七:newXXX();解决方案八:packagetest;publicclassParent{publicParent(){System.out.println("ThisisParent!!!");}} packagetest;public

怎样理解java中的回调函数

问题描述 最近遇到回调函数问题,有点不太理解,到底什么是回调函数,有何用途,与命令模式是不是有点关系! 解决方案 是可以这样说的·这个在spring中尤其明显,比如spring中的运用到的AOP2.0以后的框架,在spring配置文件中引入aop2.0以后的命名空间后可以这样配置:<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.or

详细讲解Java中的main()方法_java

前言 JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,但对于主函数为什么这么写,其中的每个关键字分别是什么意思,可能就不是所有人都能轻松地答出来的了.我也是在学习中碰到了这个问题,通过在网上搜索资料,并加上自己的实践终于有了一点心得,不敢保留,写出来与大家分享. Java中的main()方法 java虚拟机通过main方法找到需要启动的运行程序,并且检查main函数所在类是否被java虚拟机装载.如果没有装载,那么就装载该类,并且装载所有

用java写一个main函数,打印出1-6这这六个数字的所有不同的排列

1.2.2.3.4.5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234.412345等.要求:"4"不能在第三位,"3"与"5"不能相连. package com.test; import java.util.ArrayList; import java.util.List; /** * 1.2.2.3.4.5这六个数字,用java写一个main函数,打印出所有不同的排列, 如:512234.412345等.要求

java-Java中怎么把函数作为参数传给另一个函数

问题描述 Java中怎么把函数作为参数传给另一个函数 我想把fun().funQ().funR().funP()传到out函数中,然后out函数根据传进来的具体函数把函数从k=1到10的值输出,现在怎么可以把函数作为参数传递! 解决方案 在Java 8中,可以使用Lambda表达式,在Java以前的版本中,你可以定义接口,并且把你要传的函数通过写一个接口的实现类,并且在里面写一个特定的方法,来传. 解决方案二: 二维数组作为参数传给函数