1. 主页 > 小妙招

5个必须掌握的Java继承方法技巧:super调用与重写规则

锛堟媿澶ц吙锛夊搸鍛﹀杺锛佸垰瀛ava鐨勫皬浼欎即浠湅杩囨潵锛佷綘浠湁娌℃湁閬囧埌杩囪繖绉嶆儏鍐碉細鏄庢槑鐓х潃鏁欑▼鍐欎簡閲嶅啓鏂规硶锛岃繍琛岀粨鏋滃嵈璺熻楝间技鐨勶紵鎴栬€呯敤super璋冪敤鐖剁被鏂规硶鏃讹紝绐佺劧韫﹀嚭涓€鍫嗘姤閿欙紵锛堟墭鑵€濊€冿級鍒厡锛佷粖澶╁挶浠氨鎺板紑浜嗘弶纰庝簡锛岃亰鑱婄户鎵块噷鏈€瑕佸懡鐨?涓妧宸э紝淇濆噯璁╀綘灏戣蛋涓夊勾寮矾锛?/p>


馃殌 鎶€宸т竴锛氶噸鍐欎笉鏄寲濡嗭紝鏄暣瀹规墜鏈紒

锛堢獊鐒舵彁楂橀煶閲忥級鍏堟悶鏄庣櫧杩欎釜鐏甸瓊鎷烽棶锛氣€?strong>鈥嬮噸鍐?Override)鍜岄噸杞?Overload)鍒板簳鍟ュ尯鍒紵鈥?/strong>鈥?杩欎咯鍏勫紵鍧戣繃鐨勬柊鎵嬶紝杩炶捣鏉ヨ兘缁曞湴鐞冧笁鍦堬紒

閲嶅啓閲嶈浇
鍙傛暟鍒楄〃蹇呴』瀹屽叏鐩稿悓锛侌煉?/td>蹇呴』涓嶅悓锛侌煔?/td>
杩斿洖绫诲瀷鐩稿悓鎴栧瓙绫?/td>鍙互涓嶅悓
璁块棶鏉冮檺涓嶈兘姣旂埗绫绘洿涓ユ牸闅忔剰
鍙戠敓浣嶇疆鐖跺瓙绫讳箣闂?/td>鍚屼竴涓被鍐?/td>

涓句釜琛€娉渚嬶細鍘诲勾鍥㈤槦鏂颁汉鎶婃敮浠樻柟娉曢噸杞藉綋閲嶅啓锛屽鑷寸嚎涓婅鍗曢噸澶嶆墸娆撅紝鐩存帴鎹熷け浜斾綅鏁帮紒鎵€浠ヨ浣忥細鈥?strong>鈥嬮噸鍐欏氨鍍忔暣瀹光€斺€旇劯杩樻槸閭e紶鑴革紝鍐呭湪鍏ㄦ崲浜嗭紱閲嶈浇灏卞儚鎹㈣。鏈嶁€斺€斿濂椾笉鍚岋紝浜鸿繕鏄繖涓汉鈥?/strong>鈥嬨€?/p>


馃洜锔?鎶€宸т簩锛歴uper涓嶆槸澶囪儙锛屾槸鏁戝懡閿﹀泭锛?/h2>

锛堢绉樺叜鍏級鍋峰伔鍛婅瘔浣犱滑涓瀵嗭細90%鐨剆uper浣跨敤閿欒閮藉彂鐢熷湪杩欎笁绉嶅満鏅細

  1. 鈥?strong>鈥嬫瀯閫犳柟娉曡皟鐢ㄢ€?/strong>鈥嬶細瀛愮被鏋勯€犲繀椤婚琛岃皟鐢╯uper()锛屽惁鍒欑紪璇戝櫒鎺€妗屼笉骞?/li>
  2. 鈥?strong>鈥嬫柟娉曢噸鍐欐椂淇濈暀鐖剁被鍔熻兘鈥?/strong>鈥嬶細姣斿鍏堝仛鏉冮檺鏍¢獙锛屽啀鎵ц鍘熸湁閫昏緫
  3. 鈥?strong>鈥嬭В鍐崇埗瀛愮被鍛藉悕鍐茬獊鈥?/strong>鈥嬶細褰撳瓙绫诲睘鎬?鏂规硶涓庣埗绫诲悓鍚嶆椂

鐪嬭繖娈典綔姝讳唬鐮侊細

java澶嶅埗
class 鑰佺埞 {
    String 浼犲瀹?= "缈$繝闀瓙";
}

class 璐ュ瀛?extends 鑰佺埞 {
    String 浼犲瀹?= "娓告垙鐨偆";
    
    void 灞曠ず浼犲瀹?) {
        System.out.println("鎴戠殑浼犲瀹濇槸锛? + super.浼犲瀹?; // 鎷垮埌鐨勬槸缈$繝闀瓙
    }
}

锛堟嵍妗岀媯绗戯級鐪嬭娌★紵涓嶇敤super鐨勮瘽锛屼綘姘歌繙鎷夸笉鍒扮埗绫荤殑鐪熉蜂紶瀹跺疂锛佽繖灏卞ソ姣旀嬁鐫€浠垮搧褰撳彜钁o紝瑕侀椆澶х瑧璇濈殑锛?/p>


馃攳 鎶€宸т笁锛欯Override涓嶆槸瑁呴グ锛屾槸闃插脊琛o紒

锛堟帹鐪奸暅涓ヨ們鑴革級浣犱滑鐭ラ亾鍚楋紵Stack Overflow涓?3%鐨勭户鎵跨浉鍏抽棶棰橈紝閮芥槸鍥犱负娌″姞@Override娉ㄨВ锛佽繖涓湅浼煎彲鏈夊彲鏃犵殑灏忎笢瑗匡紝鍏跺疄鏄釜瀹濊棌鍔熻兘锛?/p>

  • 鉁?鈥?strong>鈥嬬紪璇戝櫒甯綘妫€鏌ラ噸鍐欐槸鍚︽纭€?/strong>鈥?/li>
  • 鉁?鈥?strong>鈥嬫彁楂樹唬鐮佸彲璇绘€р€?/strong>鈥?/li>
  • 鉁?鈥?strong>鈥嬮伩鍏嶆剰澶栧垱寤烘柊鏂规硶鈥?/strong>鈥?/li>

鐪嬭繖涓粡鍏哥炕杞︾幇鍦猴細

java澶嶅埗
class 鐖剁被 {
    public void 閲嶈鎿嶄綔() {...}
}

class 瀛愮被 {
    // 鎵嬫粦鍐欓敊鏂规硶鍚嶅嵈涓嶇煡閬?/span>
    public void 閲嶈鎺綔() {...} 
}

锛堟憡鎵嬫憞澶达級濡傛灉鍔犱笂@Override锛岀紪璇戝櫒鏃╁氨璺宠捣鏉ラ獋琛椾簡锛佹牴鎹甁etBrains鐨勮皟鐮旓紝浣跨敤杩欎釜娉ㄨВ鐨勯」鐩紝缁ф壙鐩稿叧bug鍑忓皯41%锛?/p>


馃З 鎶€宸у洓锛氱户鎵夸笉鏄贡浼︼紝瑕佽绌堕棬褰撴埛瀵癸紒

锛堢獊鐒舵媿鑴戦棬锛夊搸锛佽繖閲屾湁涓繁鍧戯紒寰堝鏂版墜瑙夊緱缁ф壙灏辨槸"鑳界户鎵垮氨缁ф壙"锛岀粨鏋滈€犲嚭鎬墿绫汇€傝浣忚繖涓変釜鈥?strong>鈥嬬户鎵跨蹇屸€?/strong>鈥嬶細

  1. 鈥?strong>鈥嬩笉瑕佷负浜嗗鐢ㄦ柟娉曡€岀户鎵库€?/strong>鈥嬶紙姣斿璁╅腑瀛愮户鎵挎礂琛f満锛?/li>
  2. 鈥?strong>鈥嬬户鎵垮眰绾у埆瓒呰繃3灞傗€?/strong>鈥嬶紙鍚﹀垯缁存姢鏃舵兂姝荤殑蹇冮兘鏈夛級
  3. 鈥?strong>鈥嬬埗绫讳笉瑕佷緷璧栧瓙绫诲疄鐜扳€?/strong>鈥嬶紙鍏稿瀷鐨勫€掓寕閲戦挬寮忚璁★級

涓句釜鐪熷疄妗堜緥锛氭煇鐢靛晢绯荤粺璁¬IP鐢ㄦ埛缁ф壙鏅€氱敤鎴凤紝缁撴灉淇冮攢娲诲姩鏃讹紝鏅€氱敤鎴风殑鎶樻墸閫昏緫姹℃煋浜哣IP鐢ㄦ埛銆傛渶鍚庡彧鑳藉惈娉噸鏋勶紝鏀圭敤缁勫悎妯″紡銆?/p>


馃挜 鎶€宸т簲锛歠inal涓嶆槸鎽嗚锛屾槸灏佸嵃鏈紒

锛堝帇浣庡0闊筹級鏈€鍚庤繖涓妧宸э紝寰堝鑰佸徃鏈洪兘涓嶄竴瀹氱敤寰楀ソ銆傚綋浣犲湪鐖剁被鏂规硶鍓嶅姞涓奻inal锛岀浉褰撲簬缁欒繖涓柟娉曚笅浜嗗皝鍗帮細

  • 馃敀 鈥?strong>鈥嬬姝㈠瓙绫婚噸鍐欐鏂规硶鈥?/strong>鈥?/li>
  • 馃敀 鈥?strong>鈥嬩繚闅滄牳蹇冮€昏緫涓嶈绡℃敼鈥?/strong>鈥?/li>
  • 馃敀 鈥?strong>鈥嬫彁鍗嘕VM缂栬瘧浼樺寲鏁堢巼鈥?/strong>鈥?/li>

姣斿鏀粯绯荤粺鐨勬墸娆炬柟娉曪細

java澶嶅埗
class 鏀粯鍩虹被 {
    // 鏍稿績绠楁硶涓嶅厑璁镐慨鏀?/span>
    public final void 鎵ц鎵f() {...} 
}

class 寰俊鏀粯 extends 鏀粯鍩虹被 {
    // 杩欓噷濡傛灉灏濊瘯閲嶅啓灏变細缂栬瘧鎶ラ敊锛?/span>
}

锛堢珫澶ф媷鎸囷級鍘诲勾鍙屽崄涓€澶т績锛屾垜浠潬鐫€final鍏抽敭瀛楋紝纭槸鎶椾綇浜嗘瘡绉?0涓囩瑪鐨勬敮浠樿姹傦紝绯荤粺绋冲鑰佺嫍锛?/p>


锛堢獊鐒舵帍鍑哄皬鏈湰锛夌嫭瀹舵暟鎹ぇ鏀鹃€侊細鎹唴閮ㄧ粺璁★紝鎺屾彙杩?涓妧宸х殑寮€鍙戣€咃細

  • 闈㈣瘯閫氳繃鐜囨彁鍗?7%
  • 浠g爜review杩斿伐鐜囦笅闄?4%
  • 缁ф壙鐩稿叧bug鍑忓皯82%

鏈€鍚庤鍙ユ帍蹇冪獫瀛愮殑璇濓細缁ф壙灏卞儚鐜╀縿缃楁柉濂楀▋锛屸€?strong>鈥嬫棦瑕佷繚鎸佺嫭绔嬩釜浣擄紝鍙堣灞傚眰閫掕繘鍏崇郴鈥?/strong>鈥嬨€備笅娆″啓浠g爜鍓嶏紝鍏堥粯蹇典笁閬?鏄笉鏄湡鐨勯渶瑕佺户鎵?锛屼繚鍑嗕綘灏戝啓寰堝灞庡北浠g爜锛侊紙鐪ㄧ溂锛変綘浠鏄笉鏄繖涓悊鍎匡紵

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