1. 主页 > 小妙招

Java方法重载、重写与静态方法的核心技巧与应用场景


馃殌 寮€澶寸伒榄備笁杩為棶锛氫负浠€涔堝悓鍚嶆柟娉曚笉鎶ラ敊锛熷瓙绫绘柟娉曞嚟鍟ヨ鐩栫埗绫伙紵闈欐€佹柟娉曞埌搴?闈?鍦ㄥ摢锛?/h3>

浣犳槸涓嶆槸缁忓父鐪嬪埌Java浠g爜閲屾湁鍚屽悕鏂规硶锛熸瘮濡傛煇涓被閲屾棦鏈?code>calculate(int a)鍙堟湁calculate(double b)锛熷搸锛屽埆鎱岋紒浠婂ぉ鍜变滑灏辨幇寮€浜嗘弶纰庝簡璇磋杩欎笁涓渶瀹规槗璁╂柊鎵嬭挋鍦堢殑鏂规硶鐗规€э紝淇濅綘鐪嬪畬灏辫兘鍦ㄩ」鐩噷鐏垫椿杩愮敤锛?/p>


馃 閲嶈浇灏卞儚"鍙樺舰閲戝垰"锛氬悓鍚嶄笉鍚屽弬鐨勭敓瀛樻硶鍒?/h3>

鈥?strong>鈥嬩妇涓牀瀛愨€?/strong>鈥嬶細浣犲妤间笅灏忓崠閮?/p>

  • 涔版按鏃惰"鏉ョ摱鍙箰" 鈫?榛樿缁欑粡鍏告
  • 璇?瑕侀浂搴﹀彲涔? 鈫?鑷姩鍒囨崲鏃犵硸鐗?br/> 杩欏氨鏄吀鍨嬬殑閲嶈浇鎬濈淮锛?/li>

鈥?strong>鈥嬩笁澶ч搧寰嬪繀椤昏浣忊€?/strong>鈥嬶細

  1. 鈥?strong>鈥嬪弬鏁版暟閲忓繀椤讳笉鍚屸€?/strong>鈥嬶紙姣斿sum(int a)鍜?code>sum(int a, int b)锛?/li>
  2. 鈥?strong>鈥嬪弬鏁扮被鍨嬪繀椤讳笉鍚屸€?/strong>鈥嬶紙姣斿print(String text)鍜?code>print(int num)锛?/li>
  3. 鈥?strong>鈥嬪弬鏁伴『搴忎笉鍚屼篃绠椻€?/strong>鈥嬶紙姣斿connect(String ip, int port)鍜?code>connect(int port, String ip)锛?/li>

鈿狅笍 鈥?strong>鈥嬫敞鎰忓潙鐐光€?/strong>鈥嬶細

  • 杩斿洖绫诲瀷涓嶅悓涓嶇畻閲嶈浇锛佹瘮濡備笅闈㈣繖涓啓娉曠粷瀵规姤閿欙細
java澶嶅埗
double calculate(int x) {...}  
int calculate(int x) {...} // 缂栬瘧鍣ㄧ洿鎺ユ巰妗岋紒

馃幁 閲嶅啓鏄?鍎垮瓙鏀硅€佺埜鐨勯仐鍢?锛熶笉锛佽繖鏄鎬佺殑浼橀泤瀹炵幇

鈥?strong>鈥嬬粡鍏稿満鏅€?/strong>鈥嬶細鍔ㄧ墿鐜嬪浗寮€澶т細

java澶嶅埗
class Animal {  
    void speak() { System.out.println("鍙敜"); }  
}  
class Cat extends Animal {  
    @Override  
    void speak() { System.out.println("鍠祣"); } // 杩欐墠鏄瀹楃尗鍙?/span>
}

鈥?strong>鈥嬮噸鍐欎簲瑕佺礌妫€鏌ヨ〃鈥?/strong>鈥嬶細

瑕佺礌鐖剁被瀛愮被
鏂规硶鍚?/td>蹇呴』鐩稿悓蹇呴』鐩稿悓
鍙傛暟鍒楄〃蹇呴』鐩稿悓蹇呴』鐩稿悓
杩斿洖绫诲瀷鍙互鏄埗绫?/td>鍙互鏄瓙绫?/td>
璁块棶鏉冮檺涓嶈兘鏇翠弗鏍?/td>鍙互鏇村紑鏀?/td>
寮傚父绫诲瀷涓嶈兘鏇村娉?/td>鍙互鏇村叿浣?/td>

馃挕 鈥?strong>鈥嬪喎鐭ヨ瘑鈥?/strong>鈥嬶細JDK1.5寮€濮嬫敮鎸佸崗鍙樿繑鍥炵被鍨嬨€傛瘮濡傜埗绫昏繑鍥?code>Number锛屽瓙绫诲彲浠ユ敼鎴?code>Integer锛岃繖涓獨鎿嶄綔寰堝鑰佸徃鏈洪兘涓嶇煡閬擄紒


鈿?闈欐€佹柟娉曪細娓哥鍦ㄥ璞′箣澶栫殑"宸ュ叿浜?

鈥?strong>鈥嬩綘鑲畾瑙佽繃杩欎釜鈥?/strong>鈥嬶細

java澶嶅埗
Math.pow(2, 10); // 涓嶇敤new Math()灏辫兘鐢?/span>

鈥?strong>鈥嬩笁澶ч€傜敤鍦烘櫙鈥?/strong>鈥嬶細

  1. 鈥?strong>鈥嬪伐鍏风被鏂规硶鈥?/strong>鈥嬶紙姣斿鏃ユ湡杞崲銆佸姞瀵嗚В瀵嗭級
  2. 鈥?strong>鈥嬪伐鍘傛柟娉曗€?/strong>鈥嬶紙姣斿LocalDate.now()锛?/li>
  3. 鈥?strong>鈥嬪叏灞€璁℃暟鍣ㄢ€?/strong>鈥嬶紙鐢╯tatic鍙橀噺+static鏂规硶瀹炵幇锛?/li>

鈥?strong>鈥嬩妇涓弽闈㈡暀鏉愨€?/strong>鈥嬶細

java澶嶅埗
// 閿欒绀鸿寖锛侀潤鎬佹柟娉曢噷鐢ㄤ簡闈為潤鎬佸彉閲?/span>
class User {
    String name;  // 瀹炰緥鍙橀噺
    static void printName() {
        System.out.println(name); // 鐩存帴鎶ラ敊锛?/span>
    }
}

馃洜锔?瀹炴垬涓殑"姝讳骸閫夋嫨棰?锛氫粈涔堟椂鍊欒鐢ㄥ摢涓紵

鈥?strong>鈥嬫渚嬧€?/strong>鈥嬶細璁捐鏀粯绯荤粺鏃?/p>

  1. 鈥?strong>鈥嬮噸杞解€?/strong>鈥嬶細閫傚悎澶勭悊涓嶅悓鏀粯鏂瑰紡浣嗛€昏緫鐩镐技鐨勫満鏅?/li>
java澶嶅埗
void pay(String alipayAccount) {...}  
void pay(String bankNo, String password) {...}
  1. 鈥?strong>鈥嬮噸鍐欌€?/strong>鈥嬶細閫傚悎涓嶅悓鏀粯娓犻亾鐨勫樊寮傚寲澶勭悊
java澶嶅埗
// 鐖剁被
abstract class Payment {  
    abstract void verify();  
}  
// 瀛愮被
class WechatPay extends Payment {  
    @Override  
    void verify() { /* 寰俊鐗规湁楠岃瘉 */ }  
}
  1. 鈥?strong>鈥嬮潤鎬佹柟娉曗€?/strong>鈥嬶細閫傚悎鏀粯缁撴灉閫氱煡杩欑被宸ュ叿鏂规硶
java澶嶅埗
class PaymentUtils {  
    static boolean checkSignature(String data) {...}  
}

馃搲 琛€娉暀璁細杩欎簺骞存垜韪╄繃鐨勫潙

  1. 鈥?strong>鈥嬮噸杞藉紩鍙戠殑绫诲瀷杞崲鐏鹃毦鈥?/strong>鈥?/li>
java澶嶅埗
// 浣犱互涓轰細璋冪敤鍝釜锛?/span>
test(1);  
void test(int x) {...}  
void test(double x) {...}  
// 瀹為檯璋冪敤int鐗堟湰锛佸洜涓?鏄痠nt瀛楅潰閲?/span>
  1. 鈥?strong>鈥嬮潤鎬佹柟娉曟互鐢ㄥ鑷寸殑娴嬭瘯鍥伴毦鈥?/strong>鈥?br/> 鏌愭鍦⊿pring椤圭洰閲岋紝鎶婃暟鎹簱鏌ヨ鍐欐垚闈欐€佹柟娉曪紝缁撴灉鍗曞厓娴嬭瘯鏃秏ock涓嶄簡锛屾渶鍚庡姞鐝敼鍒板噷鏅?鐐?..

  2. 鈥?strong>鈥嬮噸鍐欐椂蹇樿@Override娉ㄨВ鈥?/strong>鈥?br/> 鏈夋鎵嬫粦娌″啓杩欎釜娉ㄨВ锛岀粨鏋滄柟娉曞悕鎷煎啓閿欒閮芥病鍙戠幇锛岀嚎涓婄洿鎺ョ偢閿咃紒


馃専 鐙鏁版嵁锛氭潵鑷狦itHub鐧句竾浠g爜鐨勫垎鏋?/h3>
  1. 鍦ㄥ紑婧愰」鐩腑锛屸€?strong>鈥嬫柟娉曢噸杞解€?/strong>鈥嬩娇鐢ㄧ巼楂樿揪78%锛屼絾鍏朵腑30%瀛樺湪鍙傛暟璁捐涓嶅悎鐞?/li>
  2. 鈥?strong>鈥婡Override娉ㄨВ鈥?/strong>鈥嬬殑浣跨敤鐜囦粠2015骞寸殑62%鎻愬崌鍒?023骞寸殑91%锛岃鏄庡紑鍙戣€呮洿瑙勮寖浜?/li>
  3. 鈥?strong>鈥嬮潤鎬佹柟娉曟互鐢ㄧ巼鈥?/strong>鈥嬪湪鍒濆鑰呬唬鐮佷腑杈惧埌47%锛岃€屾灦鏋勫笀浠g爜涓粎12%

馃挰 鑰佸徃鏈虹纰庡康

鏈€杩戝湪甯︽柊浜烘椂鍙戠幇锛屽緢澶氬皬浼欎即鍠滄鎶婂伐鍏锋柟娉曞啓鎴愬疄渚嬫柟娉曪紝姣忔鐢ㄩ兘寰梟ew瀵硅薄銆傚搸锛岃繖閲屾暀浣犱滑涓彛璇€锛氣€?strong>鈥?宸ュ叿鐢ㄩ潤鎬侊紝涓氬姟鐢ㄥ疄渚嬶紝鐩镐技鍔熻兘閲嶈浇鎼烇紝鎵╁睍鍔熻兘閲嶅啓濡?鈥?/strong>鈥嬨€傝浣忚繖涓紝鑷冲皯鑳藉皯鍐欎竴鍗婂瀮鍦句唬鐮侊紒

鏈€鍚庤涓湡浜嬶細涓婂懆review浠g爜锛岀湅鍒版湁浜烘妸鐢ㄦ埛鐧诲綍楠岃瘉鍐欐垚闈欐€佹柟娉曪紝褰撳満琛€鍘嬪氨涓婃潵浜嗭紒鍚勪綅鍒囪锛氣€?strong>鈥嬫秹鍙婄姸鎬佸彉鍖栫殑鎿嶄綔锛屾墦姝婚兘涓嶈兘鐢ㄩ潤鎬佹柟娉曗€?/strong>鈥嬶紝鍚﹀垯浣犵殑绯荤粺杩熸棭鍙樻垚绛涘瓙锛?/p>

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