首页 > 趣闻 > 正文内容

子类重写方法时如何调用父类方法:3种实现方式

趣闻2025-05-27 15:09:58

鍝庡憖锛佸垰瀛︿細缁ф壙鐨勬柊鎵嬫槸涓嶆槸缁忓父杩欐牱鈥斺€旈噸鍐欐柟娉曚竴鏃剁埥锛岃繍琛岀粨鏋滅伀钁満锛燄煍?灏卞儚鎶婅€佸鐨勬嬁鎵嬭彍鏀硅壇鍚庯紝鍙戠幇杩炲熀纭€鍛抽亾閮藉彉浜嗭紒浠婂ぉ鍜变滑灏辨潵鍞犲敔杩欎釜涓栫邯闅鹃锛屼繚鍑嗚浣犳棦淇濈暀绁栦紶绉樻柟锛屽張鑳界帺鍑烘柊鑺辨牱锛?/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>鈥嬶細

  1. super蹇呴』鍐欏湪鏂规硶绗竴琛岋紵鉂?杩欐槸鏋勯€犳柟娉曠殑瑙勭煩锛?/li>
  2. 鍙互澶氭璋冪敤super鍚楋紵鉂?Java涓嶅厑璁搁噸澶嶅彫鍞?/li>
  3. 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>
  1. 鈥?strong>鈥嬩贡浼﹁皟鐢ㄢ€?/strong>鈥嬶紙璺ㄧ骇璋冪敤锛?/li>
java澶嶅埗
super.super.鏂规硶(); // 鉂?Java绂佹杩欑鎿嶄綔

灏卞儚璁╁瓩瀛愮洿鎺ョ户鎵跨埛鐖风殑璐骇锛岃烦杩囩埜鐖革紵娉曞緥涓嶅厑璁革紒

  1. 鈥?strong>鈥嬫寰幆闄烽槺鈥?/strong>鈥?/li>
java澶嶅埗
class 閿欒绀轰緥 {
    void 鏂规硶A() {
        super.鏂规硶A(); // 鉂?寮曞彂鏃犻檺閫掑綊
    }
}

杩欐搷浣滃牚姣斾縿缃楁柉濂楀▋鏈€閲屽眰杩樻兂鍐嶅濞?..

  1. 鈥?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鐨勬剰瑙侊紒馃

搜索