1. 主页 > 小妙招

Java方法重载与重写的区别:从语法到应用场景解析

浣犳槸涓嶆槸缁忓父鍦ㄤ唬鐮侀噷鐪嬪埌涓や釜闀垮緱鍍忓弻鑳炶儙鐨勬柟娉曪紵鏈夋椂鍊欏弬鏁颁笉涓€鏍凤紝鏈夋椂鍊欒繛绫婚兘鎹簡锛熶粖澶╁挶浠氨鎺版壇娓呮杩欎釜璁╂柊鎵嬫姄鐙傜殑鈥?strong>鈥嬫柟娉曢噸杞斤紙Overload锛夆€?/strong>鈥嬪拰鈥?strong>鈥嬫柟娉曢噸鍐欙紙Override锛夆€?/strong>鈥嬶紝淇濊瘉浣犵湅瀹屽啀涔熶笉鎬曢潰璇曞畼绐佺劧琚嚮锛?/p>


绗憼骞曪細璇硶鐣岀殑瀛敓鍏勫紵

锛堟帍鍑虹浼犱唬鐮佹湰锛夊厛鐪嬩釜鍏稿瀷鍦烘櫙锛?/p>

java澶嶅埗
// 閲嶈浇妗堜緥
class Calculator {
    // 涓や釜鏁扮浉鍔?/span>
    int add(int a, int b) { return a + b; }
    
    // 涓変釜鏁扮浉鍔?鈫?杩欏氨鏄噸杞?/span>
    int add(int a, int b, int c) { return a + b + c; }
}

// 閲嶅啓妗堜緥
class Animal {
    void speak() { System.out.println("鍙敜"); }
}

class Cat extends Animal {
    // 瑕嗙洊鐖剁被鏂规硶 鈫?杩欏氨鏄噸鍐?/span>
    void speak() { System.out.println("鍠祣"); }
}

鍙戠幇娌★紵鈥?strong>鈥嬮噸杞芥槸妯悜鎵╁睍锛岄噸鍐欐槸绾靛悜瑕嗙洊鈥?/strong>鈥嬨€傚氨鍍忔墜鏈烘洿鏂扳€斺€旈噸杞芥槸鍑篜ro鐗堝姞鎽勫儚澶达紝閲嶅啓鏄洿鎺ユ妸鏃х郴缁熷崌绾т簡銆?/p>


绗憽骞曪細鏍稿績鍖哄埆瀵圭収琛?/h3>

锛堟壎姝g溂闀滐級鍜变滑鏉ヤ釜鐩寸悆瀵规瘮锛?/p>

姣旇緝椤?/th>鏂规硶閲嶈浇鏂规硶閲嶅啓
鍙戠敓浣嶇疆鍚屼竴涓被閲?/td>鐖跺瓙绫讳箣闂?/td>
鏂规硶鍚?/td>蹇呴』鐩稿悓蹇呴』鐩稿悓
鍙傛暟鍒楄〃蹇呴』涓嶅悓蹇呴』鐩稿悓
杩斿洖鍊?/td>鍙互涓嶅悓蹇呴』鍏煎
璁块棶鏉冮檺鍙互璋冩暣涓嶈兘鏇翠弗鏍?/td>
寮傚父绫诲瀷闅忎究鏁?/td>涓嶈兘鎵╁ぇ鍖?/td>
娉ㄨВ瑕佹眰鐖卞姞涓嶅姞寮虹儓寤鸿鍔燖Override

涓句釜瀹炴垬鏍楀瓙馃尠锛氫綘鍘婚害褰撳姵鐐归鈥斺€?/p>

  • 閲嶈浇锛氭湇鍔″憳闂?瑕佸椁怉杩樻槸濂楅B锛?锛堝弬鏁颁笉鍚岋級
  • 閲嶅啓锛氱粡鐞嗚"鎵€鏈夊椁愪粖澶╁崐浠凤紒"锛堣鐩栧畾浠疯鍒欙級

绗憿骞曪細姝讳骸闄烽槺澶ф彮绉?/h3>

鏂版墜鏈€瀹规槗鏍界殑鍧戯紝鎴戠粰浣犱滑鍒椾釜榛戝悕鍗曪細

鈻屸€?strong>鈥嬮噸杞戒笁澶ч浄鍖衡€?/strong>鈥?/p>

  1. 濡勬兂閫氳繃杩斿洖鍊间笉鍚屾潵閲嶈浇锛堢紪璇戝櫒鐩存帴鎺€妗岋級
  2. 鍙傛暟绫诲瀷鑷姩杞崲瀵艰嚧鎰忓璋冪敤锛堟瘮濡俰nt鍜宒ouble娣风敤锛?/li>
  3. 鍙彉鍙傛暟寮曞彂鐨勮妗堬紙String...鍜孲tring[]鐨勫尯鍒級

鈻屸€?strong>鈥嬮噸鍐欏洓澶х蹇屸€?/strong>鈥?/p>

  1. 鎶妔tatic鏂规硶褰撴櫘閫氭柟娉曢噸鍐欙紙static灞炰簬绫伙紝涓嶅弬涓庤鐩栵級
  2. 闄嶄綆璁块棶鏉冮檺锛堟瘮濡俻ublic鏀规垚private锛?/li>
  3. 鎶涘嚭鏂扮殑妫€鏌ュ瀷寮傚父锛堟瘮濡傜埗绫绘病鎶汭OException锛屽瓙绫绘姏浜嗭級
  4. 蹇樿@Override娉ㄨВ锛堟墜婊戞嫾閿欐柟娉曞悕閮戒笉鎶ヨ锛?/li>

鍘诲勾鏈変釜鍝ヤ滑鍐欐敮浠樻帴鍙o紝鎶奵heckBalance()鎷兼垚chekBalance()杩樻病鍔燖Override锛岀粨鏋滅嚎涓婄洿鎺ュ皯鏍¢獙浜嗕笂鐧句竾閲戦锛佽娣嬫穻鐨勬暀璁晩锛?/p>


绗懀骞曪細鐏甸瓊鎷烽棶鐜妭

锛堟暡榛戞澘锛夋垜鐭ラ亾浣犱滑鍦ㄦ兂鍟ワ細

鈥?strong>鈥婹锛氫负浠€涔堥噸杞戒笉鑳介潬杩斿洖鍊煎尯鍒嗭紵鈥?/strong>鈥?br/> A锛氬亣璁炬湁淇╂柟娉曢兘鍙玤etData()锛屼竴涓繑鍥濻tring锛屼竴涓繑鍥瀒nt銆傚綋浣犺皟鐢╣etData()鏃讹紝缂栬瘧鍣ㄤ細鎳靛湀鈥斺€旈鐭ラ亾浣犺鍝釜杩斿洖鍊煎晩锛?/p>

鈥?strong>鈥婹锛氫粈涔堟椂鍊欒鐢ㄩ噸杞斤紵浠€涔堟椂鍊欒鐢ㄩ噸鍐欙紵鈥?/strong>鈥?br/> A锛氳浣忚繖涓彛璇€鈥斺€斺€?strong>鈥嬪姛鑳芥墿灞曠敤閲嶈浇锛岃涓烘敼閫犵敤閲嶅啓鈥?/strong>鈥嬨€傛瘮濡備綘瑕佺粰璁$畻鍣ㄥ姞涓皬鏁板姞娉曞姛鑳斤紝灏遍噸杞絘dd()鏂规硶锛涜鏄兂褰诲簳鏀瑰彉杩愮畻閫昏緫锛屽氨鍘婚噸鍐欍€?/p>

鈥?strong>鈥婹锛氭帴鍙f柟娉曠畻閲嶅啓鍚楋紵鈥?/strong>鈥?br/> A锛氫弗鏍艰绠楀疄鐜帮紝浣嗚娉曚笂鍙互鐢ˊOverride鏍囨敞銆傛瘮濡傚疄鐜癛unnable鎺ュ彛鏃讹細

java澶嶅埗
@Override
public void run() {
    // 浣犵殑绾跨▼浠g爜
}

灏忕紪瑙傜偣

鍦ㄧ粡鍘嗕簡涓夋閲嶆瀯琛€娉彶鍚庯紝鎴戝彂鐜颁釜瑙勫緥锛氣€?strong>鈥嬮」鐩噷80%鐨勬柟娉曢噸鍐欓敊璇兘婧愪簬娌″姞@Override娉ㄨВ鈥?/strong>鈥嬨€傝€岄噸杞藉紩鍙戠殑BUG澶у鍑虹幇鍦ㄥ弬鏁拌嚜鍔ㄨ绠辨媶绠辨椂銆傚缓璁柊鎵嬪墠鏈熶弗鏍奸伒寰袱涓師鍒欙細

  1. 鎵€鏈夐噸鍐欐搷浣滃繀椤绘埓濂紷Override杩欎釜瀹夊叏甯?/li>
  2. 閲嶈浇鏂规硶鏃跺厛鍐欐枃妗h鏄庡弬鏁板樊寮?br/> 璁颁綇锛屼唬鐮佷笉鏄啓缁欒嚜宸辩湅鐨勶紝鏄粰鍗婂勾鍚庣殑鑷繁鍜屽叾浠栧€掗湁铔嬬湅鐨勶紒姣曠珶璋佷篃涓嶆兂鍗婂鎺ュ埌杩愮淮鐢佃瘽璇达細"浣犻偅鏂规硶鍜嬩笉鎸夊璺嚭鐗屽晩锛?

本文由嘻道妙招独家原创,未经允许,严禁转载