java中,到底overwrite和override有什么区别?
Override,Overload,Overwrite的区别
首先:
Override是方法的覆盖
overload是方法的重载
Overwrite是方法的重写
一,方法的覆盖(Override)是指子类重写从父类继承
来的一个同名方法(参数、返回值也同),马克-to-win:此时子类将清除父类方法的影响,实现自身的行为。实在想用原来的,可以用super。
二 ,顺便说,overload指同名方法,通过不同的参数样式共存,有时用这个,有时用那个。参数样式指,不同的参数类型,不同的参数个数,不同的参数顺序,返回
值不起作用。再顺便说,比较权威公开的著作,都支持overwrite在java中不存在的说法。作者认为overwrite这个概念,需要正式提出来与
否是看提出它以后,对某种学术现象是否有帮助。override和overload的提出,对于某些现象,大家定义了这两个名词以后,解释起来很容易。而
overwrite显然不具备这种功效。学术名词的定义显然不如compiler更实力派,compiler说怎么样就怎么样。我们看看下面的一个实用的
例子。此例子证明,compiler(编译器)一定是按照先子类,后父类,先精确匹配,后模糊匹配的顺序。
例1.5.3
class AAAMark_to_win {
double f(double x, double yMark_to_win) {
return x * yMark_to_win;
}
double f(int x, double y) {
return x * y*2;
}
}
class BBB extends AAAMark_to_win {
double f(double x, double y)
{
return x + y;
2024-11-19 广告
比如A类有一个T方法
class A{
public void T(int a){
A中T方法代码
}
}
而B类继承A类后
class B extend A{
public void T(int){
B类中T方法代码
}
}
具体就是方法名,方法类型,参数列表都要与父类中的方法一致,而方法内的代码可以任意改写,
}
而重载是在同一类中的多个方法之间
class A{
public void T(int a){
A中T方法代码
}
public String T(String a){
return "";
}
}
方法类型,参数可以不相同,方法名要相同
重载是指一个类中有两个名称相同但是参数个数或者参数类型不同的方法,这两个方法属于c重载。