Override,Overload,Overwrite到底有什么區(qū)別?
Override,Overload,Overwrite的區(qū)別【新手可忽略不影響繼續(xù)學(xué)習(xí)】
方法的覆蓋(Override)是指子類重寫(xiě)從父類繼承來(lái)的一個(gè)同名方法(參數(shù)、返回值也同),馬克-to-win:此時(shí)子類將清除父類方法的影響,實(shí)現(xiàn)自身的行為。實(shí)在想用原來(lái)的,可以用super。順便說(shuō),overload指同名方法,通過(guò)不同的參數(shù)樣式共存,有時(shí)用這個(gè),有時(shí)用那個(gè)。參數(shù)樣式指,不同的參數(shù)類型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)順序,返回值不起作用。再順便說(shuō),比較權(quán)威公開(kāi)的著作,都支持overwrite在java中不存在的說(shuō)法。我們看看下面的一個(gè)實(shí)用的例子。此例子證明,compiler(編譯器)一定是按照先子類,后父類,先精確匹配,后模糊匹配的順序。
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
例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;
}
}
public class Test {
public static void main(String args[]) {
BBB obj = new BBB();
/*找參數(shù)的準(zhǔn)確匹配, 子類中沒(méi)有, 就去父類中找*/
System.out.println(obj.f(4, 6.0));
/*如果沒(méi)有準(zhǔn)確匹配, 就模糊匹配(強(qiáng)轉(zhuǎn)一下),馬克-to-win:還是按照從子類到父類的順序*/
System.out.println(obj.f(4.0, 6));
}
}
結(jié)果是:
48.0
10.0