1、overload和override的区别(2007-06-0317:35:53)转载分类:技术交流 1、Overload没有关系,Override有点关系(范围小的可以被范围大的Override)。 2、Overload返回值类型不同不能作为不同的两个函数,Override应该完全一样的返回类型。 --------------------------------------------------------------- overload: public a(){} public a(int a){] 在一
2、个类中有同名的方法,但是方法带有不同的参数 Override: public class a{ public aaa(){] } public class b extends a { public aaa(){} } 方法aaa Override --------------------------------------------------------------- 还有,overload一般发生在同一个类中的有着不同的参数名和(或)不同数量的参数的同名方法之间,但同名方法的返回值可以一样 o
5、两个类: class Father { public void doSomething(){} public void doSomething(int a){} public void doSomething(String s, int a){} } class Son extends Father { public void doSomething(String s, int a) {} public void doSomething(int a, String s
6、){} } Father类中有3个doSomething方法,唯一的区别是参数类型列表,它们是overload了的方法。再看子类,第一个方法也叫doSomething,且父类中有一个doSomething方法和这个方法的参数类型列表相同,所以这是override;而第二个方法虽然名字也叫doSomething,但它的参数类型列表跟父类中和子类中其他的doSomething方法的参数类型列表不一致,所以编译器默认这是一个overload的方法。那实际上我们有多少种方式来调用Son的实例呢?如下: new So
7、n().dosomething(); new Son().dosomething(3); new Son().dosomething("Hi", 5); new Son().dosomething(7, "Hello"); 其中前三个是从父类继承的,且第三个是调用的子类的那个public void doSomething(String s, int a){}方法,最后一个是在子类中新定义的一个overload的方法。 注意:overload是指同样的东西在不同的地方具有多种含义,而override是指它随时