Overloading&Overriding

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

l overloading與overriding

l overloading與overriding的觀念:

overloading

名字一樣,給不同的條件(參數,多寡或順序不同即可)做不同的事。譬如上班(){},帶參數”SR”時是在執行”趕工寫程式”,不帶參數時是在執行”摸魚”。注意,回傳值不同不可代表overload,且會造成compiler error。

overriding

名字一樣,且條件(參數及回傳值)也要一模一樣。主要是覆寫掉繼承來的東西。譬如繼承了超認真的做人態度,就一定會變得超認真(預設繼承來是不能選擇的)只要可以做到接觸的比爸媽更多(access modifier要更大)且犯更少的錯(throws exceptions範圍要更小),就懂得用另一種態度來生活。

l overloading與overriding的區別:

meaning

Access modifier

Return

type

Method

name

Para list

Throws

exceptions

overloading

reuse the method name

dont’ care

dont’ care

不同(type, count,order)

dont’ care

overriding

redefine the method

不小

subset

l overriding需特別注意是否滿足下列條件,否則會compiler error。

n access modifier--不小:

u subclass的access modifier不可比superclass的access modifier小。

n ruturn type、para list--同

u subclass與superclass的return type與para list須相同。

n throws exceptions—subset

u subclass所丟出的checked exception範圍不可超過superclass所丟出的exception。

n final methods不可被overridden。

n final class中的所有methods不會被overridden,因為final class不會有subclass。

n private method不會overridden,因為subclass不會繼承superclass的private members。

n overriding method(subclass)不可以是static method。

n static method不可被non-static method overridden,只可被subclass的static method shadowed

override superclass時只有method會被覆寫,property不會被覆寫。

来自:【 Garfield 的 SCJP 閱讀筆記 】

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航