关于overload和override的区别

来源:互联网 发布:手机屏幕调色软件 编辑:程序博客网 时间:2024/04/25 07:34

资料来自网络。

overload(通常被翻译为过载或重载)

一般语境里overload是对method(方法)而言的,可以指一个类中多个名字相同而参数类型列表不相同的方法,

这个名字代表的方法就是被overload了的。编译器会根据参数类型列表的不同来决定调用叫这个名字的很多方法中具体的哪一个。


>>override(通常被翻译为覆盖/重写)

一般语境里,如果说这个method(方法)是被override来的,就是说在定义这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法,在子类中,这个方法被override了。在对这个子类的实例调用该方法时,编译器确切的知道调用的是这个子类的方法。



加上百度知道的大牛回答:


您好,提问者:   还是以代码的例子看一下区别吧。1.重载的概念:----->在同一个类中,允许存在同名函数,但它们的参数个数或者参数类型不同即可。public static void main(String[] args){System.out.println(add(1,2));System.out.println(add(1.11,2.22));}//返回一个int类型相加的和public static int add(int a, int b){return a + b;}//返回一个double类型想加的和public static double add(double a, double b){return a + b;} 重载,在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。重写就是(这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法)子类重写了父类的方法。比如:class Fu{   int num = 3;}class Zi extends Fu{   int num = 5;}这时候Zi类继承了Fu类,也拥有了num,这时候输出num,JVM(虚拟机)会先去Fu类中查找,输出Fu类中的num,但是Zi类有num,所有在运行Zi类的时候重写了num的值,输出5

0 0