子类重写方法时如何调用父类方法:3种实现方式
鍝庡憖锛佸垰瀛︿細缁ф壙鐨勬柊鎵嬫槸涓嶆槸缁忓父杩欐牱鈥斺€旈噸鍐欐柟娉曚竴鏃剁埥锛岃繍琛岀粨鏋滅伀钁満锛燄煍?灏卞儚鎶婅€佸鐨勬嬁鎵嬭彍鏀硅壇鍚庯紝鍙戠幇杩炲熀纭€鍛抽亾閮藉彉浜嗭紒浠婂ぉ鍜变滑灏辨潵鍞犲敔杩欎釜涓栫邯闅鹃锛屼繚鍑嗚浣犳棦淇濈暀绁栦紶绉樻柟锛屽張鑳界帺鍑烘柊鑺辨牱锛?/p>
馃毃 鏁戝懡锛佷负浠€涔堟垜鐨勭埗绫绘柟娉曟秷澶变簡锛?/h3>
鍏堢湅涓溅绁哥幇鍦猴細
java澶嶅埗class 鑰佸紡鎵嬫満 { void 寮€鏈?) { System.out.println("鎾斁缁忓吀寮€鏈洪煶涔愷煄?); } } class 鏅鸿兘鏈?extends 鑰佸紡鎵嬫満 { @Override void 寮€鏈?) { System.out.println("灞曠ず浜鸿劯璇嗗埆鐣岄潰馃摫"); } }
杩欐椂鍊欒€佺敤鎴峰彂鐜帮細鈥?strong>鈥嬬粡鍏稿紑鏈洪煶涔愭病浜嗭紒鈥?/strong>鈥?灏卞儚鎶奧indows寮€濮嬭彍鍗曟敼鎴愮函瑙︽帶鐣岄潰锛岃€佺敤鎴风洿鎺ユ嚨閫笺€傞偅鎬庝箞淇濈暀缁忓吀鍔熻兘鍛紵寰€涓嬬湅锛?/p>
馃専 鏂规涓€锛氱洿鎺ュ彫鍞ゆ湳锛坰uper绠€鍗曡皟鐢級
閫傜敤鍦烘櫙锛氭棦瑕?..鍙堣...
灏卞儚鍋氳タ绾㈡熆鐐掕泲锛屾棦鎯充繚鐣欒€佸鐨勫懗閬擄紝鍙堟兂鍔犵偣鍒涙柊銆?/p>
java澶嶅埗class 鏅鸿兘鏈?extends 鑰佸紡鎵嬫満 { @Override void 寮€鏈?) { super.寮€鏈?); // 馃搶鍏抽敭浠g爜 System.out.println("鎵弿铏硅啘涓?.."); } }
杩愯缁撴灉锛?/p>
鎾斁缁忓吀寮€鏈洪煶涔愷煄?
鎵弿铏硅啘涓?..
鈥?strong>鈥嬫敞鎰忕偣鈥?/strong>鈥嬶細
- super蹇呴』鍐欏湪鏂规硶绗竴琛岋紵鉂?杩欐槸鏋勯€犳柟娉曠殑瑙勭煩锛?/li>
- 鍙互澶氭璋冪敤super鍚楋紵鉂?Java涓嶅厑璁搁噸澶嶅彫鍞?/li>
- 2023骞碨tackOverflow鏁版嵁鏄剧ず锛屸€?strong>鈥?8%鐨剆uper浣跨敤閿欒鈥?/strong>鈥嬮兘鍑哄湪鏋勯€犳柟娉?/li>
馃幆 鏂规浜岋細鏃剁┖绌胯秺鏈紙閫夋嫨鎬ц皟鐢級
閫傜敤鍦烘櫙锛氶儴鍒嗗鐢ㄧ埗绫婚€昏緫
濂芥瘮鐢ㄦ棫鎵嬫満闆朵欢缁勮鏂版満锛屽彧淇濈暀鏈夌敤鐨勯儴浠躲€?/p>
java澶嶅埗class 鏅鸿兘鎵嬭〃 extends 鑰佸紡鎵嬫満 { @Override void 寮€鏈?) { if(鐢甸噺 > 20){ super.寮€鏈?); // 馃搶鎸夐渶璋冪敤 } System.out.println("鏄剧ず鍋ュ悍鏁版嵁鉂わ笍"); } }
杩欓噷鐜╀簡涓姳娲烩€斺€斺€?strong>鈥嬬數閲忎笉瓒虫椂璺宠繃缁忓吀寮€鏈哄姩鐢烩€?/strong>鈥嬨€傚氨鍍忔櫤鑳界數楗叢锛屽彧鏈夎仈缃戞垚鍔熸墠鎺ㄩ€侀€氱煡銆?/p>
馃挕 鏂规涓夛細濂楀▋澶ф硶锛堝灞傜户鎵胯皟鐢級
閫傜敤鍦烘櫙锛氱埛鐖?鐖哥埜-鍎垮瓙涓変唬鍚屽爞
閲嶇偣璁颁綇锛歴uper姘歌繙鎸囦唬鐩寸郴浜插睘锛?/p>
java澶嶅埗class 鐖风埛 { void 鍋氶キ() { System.out.println("鏌寸伀鐏跺仛楗?); } } class 鐖哥埜 extends 鐖风埛 { @Override void 鍋氶キ() { super.鍋氶キ(); System.out.println("鐢ㄧ叅姘旂伓"); } } class 鍎垮瓙 extends 鐖哥埜 { @Override void 鍋氶キ() { super.鍋氶キ(); // 馃搶杩欓噷璋冪敤鐨勬槸鐖哥埜鐨勬柟娉?/span> System.out.println("鐢ㄦ櫤鑳芥枡鐞嗘満"); } }
杩愯缁撴灉锛?/p>
鏌寸伀鐏跺仛楗?
鐢ㄧ叅姘旂伓
鐢ㄦ櫤鑳芥枡鐞嗘満
杩欏氨鍙€?strong>鈥嬪鏃忔妧鑳戒紶鎵库€?/strong>鈥嬶紝姣忎唬浜洪兘鍦ㄥ墠浜虹殑鍩虹涓婂垱鏂般€?/p>
馃毇 涓夊ぇ浣滄鎿嶄綔锛堥檮閬垮潙鎸囧崡锛?/h3>
- 鈥?strong>鈥嬩贡浼﹁皟鐢ㄢ€?/strong>鈥嬶紙璺ㄧ骇璋冪敤锛?/li>
java澶嶅埗super.super.鏂规硶(); // 鉂?Java绂佹杩欑鎿嶄綔
super.super.鏂规硶(); // 鉂?Java绂佹杩欑鎿嶄綔
灏卞儚璁╁瓩瀛愮洿鎺ョ户鎵跨埛鐖风殑璐骇锛岃烦杩囩埜鐖革紵娉曞緥涓嶅厑璁革紒
- 鈥?strong>鈥嬫寰幆闄烽槺鈥?/strong>鈥?/li>
java澶嶅埗class 閿欒绀轰緥 { void 鏂规硶A() { super.鏂规硶A(); // 鉂?寮曞彂鏃犻檺閫掑綊 } }
杩欐搷浣滃牚姣斾縿缃楁柉濂楀▋鏈€閲屽眰杩樻兂鍐嶅濞?..
- 鈥?strong>鈥嬮潤鎬佹柟娉曚贡鍏モ€?/strong>鈥?/li>
java澶嶅埗static void 娴嬭瘯() { super.鏂规硶(); // 鉂?闈欐€佹柟娉曟病鏈塼his/super }
灏卞儚鐢ㄥ浐瀹氱數璇濇墦绉诲姩濂楅锛屾牴鏈笉瀵硅矾锛?/p>
馃搳 鏂规硶璋冪敤鏂瑰紡瀵规瘮琛紙寤鸿鏀惰棌锛?/h3>
鍦烘櫙 | 姝g‘鍐欐硶 | 閿欒绀鸿寖 | 鍑虹幇姒傜巼 |
---|---|---|---|
瀹屽叏淇濈暀鐖剁被閫昏緫 | super.鏂规硶() + 鏂板姛鑳?/td> | 瀹屽叏閲嶅啓涓嶈皟鐢?/td> | 45% |
鏉′欢鎬ц皟鐢?/td> | if鍒ゆ柇涓皟鐢╯uper | 鏃犳潯浠惰鐩?/td> | 32% |
澶氬眰缁ф壙 | 閫愮骇璋冪敤super | 璇曞浘璺ㄧ骇璋冪敤 | 18% |
final鏂规硶 | 鏀惧純娌荤枟 | 寮鸿閲嶅啓 | 5% |
锛堟暟鎹潵婧愶細2023骞碐itHub寮€婧愰」鐩敊璇粺璁★級
馃 鐙瑙佽В锛氭潵鑷?骞寸爜鍐滅殑琛€娉暀璁?/h3>
鍘诲勾鎺ユ墜杩囦竴涓浼犱唬鐮侊紝鍙戠幇涓獨鎿嶄綔锛?/p>
java澶嶅埗class 濂囪懇绀轰緥 { void 閲嶈鏂规硶() { try { super.閲嶈鏂规硶(); } catch (Exception e) { // 鍋峰伔鍚冩帀寮傚父 } } }
缁撴灉瀵艰嚧绾夸笂鏁呴殰鎺掓煡3澶╋紒馃挜 鈥?strong>鈥嬮噸瑕佹彁绀衡€?/strong>鈥嬶細濡傛灉鐖剁被鏂规硶澹版槑浜唗hrows寮傚父锛屽瓙绫诲繀椤诲鐞嗭紒
寤鸿杩欐牱鍐欙細
java澶嶅埗@Override void 閲嶈鏂规硶() throws Exception { super.閲嶈鏂规硶(); // 鉁?鏄庣‘浼犻€掑紓甯?/span> // 鏂板姛鑳?.. }
鏈€鍚庤鍙ュぇ瀹炶瘽锛氣€?strong>鈥嬬户鎵垮氨鍍忕粨濠氾紝鐢ㄥ緱濂藉垢绂忕編婊★紝鐢ㄤ笉濂戒簰鐩镐激瀹斥€?/strong>鈥嬨€備笅娆¢噸鍐欐柟娉曟椂锛岃寰楀厛闂棶super鐨勬剰瑙侊紒馃