顶一个
1、Overload没有关系,Override有点关系(范围小的可以被范围大的Override)。
2、Overload返回值类型 不同不能作为不同的两个函数,Override应该 完全一样的返回类型。
---------------------------------------------------------------
overload:
public a(){}
public a(int
a){]
在一个类中有同名的方法,但是方法带有不同的参数
Override:
public class
a{
public
aaa(){]
}
public class
b
extends
a
{
public
aaa(){}
}
方法aaa Override
---------------------------------------------------------------
还有,overload一般发生在 同一个类中的有着不同的参数名和(或)不同数量的参数的 同名方法之间,但同名方法的返回值可以一样
override比较常见的是子类继承父类后,override父类中的一些方法以满足自己的需要。
我好像记得override的方法前的访问控制不能比父类中的方法中的控制权限低,就是说protected的父类方法不能被override成private或default的,你可以去看看书,书上应该有介绍。
---------------------------------------------------------------
>>overload(通常被翻译为过载或重载)
一般语境里overload是对method(方法)而言的,可以指一个类中多个名字相同而参数类型列表不相同的方法,这个名字代表的方法就是被overload了的。编译器会根据参数类型列表的不同来决定调用叫这个名字的很多方法中具体的哪一个。
>>override(通常被翻译为覆盖)
一般语境里,如果说这个method(方法)是被override来的,就是说在定义这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法,在子类中,这个方法被override了。在对这个子类的实例调用该方法时,编译器确切的知道调用的是这个子类的方法。
考虑这样两个类:
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){}
}
Father类中有3个doSomething方法,唯一的区别是参数类型列表,它们是overload了的方法。再看子类,第一个方法也叫doSomething,且父类中有一个doSomething方法和这个方法的参数类型列表相同,所以这是override;而第二个方法虽然名字也叫doSomething,但它的参数类型列表跟父类中和子类中其他的doSomething方法的参数类型列表不一致,所以编译器默认这是一个overload的方法。那实际上我们有多少种方式来调用Son的实例呢?如下:
new Son().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是指它随时随地都只有一种含义。
原文地址:overload和override的区别
作者:尘封
2、Overload返回值类型 不同不能作为不同的两个函数,Override应该 完全一样的返回类型。
---------------------------------------------------------------
overload:
public
public
在一个类中有同名的方法,但是方法带有不同的参数
Override:
public
}
public
}
方法aaa Override
---------------------------------------------------------------
还有,overload一般发生在 同一个类中的有着不同的参数名和(或)不同数量的参数的 同名方法之间,但同名方法的返回值可以一样
override比较常见的是子类继承父类后,override父类中的一些方法以满足自己的需要。
我好像记得override的方法前的访问控制不能比父类中的方法中的控制权限低,就是说protected的父类方法不能被override成private或default的,你可以去看看书,书上应该有介绍。
---------------------------------------------------------------
>>overload(通常被翻译为过载或重载)
一般语境里overload是对method(方法)而言的,可以指一个类中多个名字相同而参数类型列表不相同的方法,这个名字代表的方法就是被overload了的。编译器会根据参数类型列表的不同来决定调用叫这个名字的很多方法中具体的哪一个。
>>override(通常被翻译为覆盖)
一般语境里,如果说这个method(方法)是被override来的,就是说在定义这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法,在子类中,这个方法被override了。在对这个子类的实例调用该方法时,编译器确切的知道调用的是这个子类的方法。
考虑这样两个类:
class
}
class
}
Father类中有3个doSomething方法,唯一的区别是参数类型列表,它们是overload了的方法。再看子类,第一个方法也叫doSomething,且父类中有一个doSomething方法和这个方法的参数类型列表相同,所以这是override;而第二个方法虽然名字也叫doSomething,但它的参数类型列表跟父类中和子类中其他的doSomething方法的参数类型列表不一致,所以编译器默认这是一个overload的方法。那实际上我们有多少种方式来调用Son的实例呢?如下:
new
new
new
new
其中前三个是从父类继承的,且第三个是调用的子类的那个public
注意:overload是指同样的东西在不同的地方具有多种含义,而override是指它随时随地都只有一种含义。