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>
- 濡勬兂閫氳繃杩斿洖鍊间笉鍚屾潵閲嶈浇锛堢紪璇戝櫒鐩存帴鎺€妗岋級
- 鍙傛暟绫诲瀷鑷姩杞崲瀵艰嚧鎰忓璋冪敤锛堟瘮濡俰nt鍜宒ouble娣风敤锛?/li>
- 鍙彉鍙傛暟寮曞彂鐨勮妗堬紙String...鍜孲tring[]鐨勫尯鍒級
鈻屸€?strong>鈥嬮噸鍐欏洓澶х蹇屸€?/strong>鈥?/p>
- 鎶妔tatic鏂规硶褰撴櫘閫氭柟娉曢噸鍐欙紙static灞炰簬绫伙紝涓嶅弬涓庤鐩栵級
- 闄嶄綆璁块棶鏉冮檺锛堟瘮濡俻ublic鏀规垚private锛?/li>
- 鎶涘嚭鏂扮殑妫€鏌ュ瀷寮傚父锛堟瘮濡傜埗绫绘病鎶汭OException锛屽瓙绫绘姏浜嗭級
- 蹇樿@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澶у鍑虹幇鍦ㄥ弬鏁拌嚜鍔ㄨ绠辨媶绠辨椂銆傚缓璁柊鎵嬪墠鏈熶弗鏍奸伒寰袱涓師鍒欙細
- 鎵€鏈夐噸鍐欐搷浣滃繀椤绘埓濂紷Override杩欎釜瀹夊叏甯?/li>
- 閲嶈浇鏂规硶鏃跺厛鍐欐枃妗h鏄庡弬鏁板樊寮?br/> 璁颁綇锛屼唬鐮佷笉鏄啓缁欒嚜宸辩湅鐨勶紝鏄粰鍗婂勾鍚庣殑鑷繁鍜屽叾浠栧€掗湁铔嬬湅鐨勶紒姣曠珶璋佷篃涓嶆兂鍗婂鎺ュ埌杩愮淮鐢佃瘽璇达細"浣犻偅鏂规硶鍜嬩笉鎸夊璺嚭鐗屽晩锛?
本文由嘻道妙招独家原创,未经允许,严禁转载