首页 > 奇闻 > 正文内容

Java子类继承父类方法详解:从重写到super调用的3个技巧

奇闻2025-05-28 04:19:20

馃 涓轰粈涔堟垜鐨凧ava浠g爜鎬绘姤閿欙紵瀛愮被鍒板簳鎬庝箞鐢ㄧ埗绫绘柟娉曞晩锛?/h3>

鍒氬Java鐨勫厔寮熻偗瀹氶亣鍒拌繃杩欎釜鍦烘櫙锛氭柊寤轰簡涓€涓瓙绫伙紝鎯崇敤鐖剁被鐨勬柟娉曪紝缁撴灉瑕佷箞鎶ラ敊鈥滄柟娉曟湭瀹氫箟鈥濓紝瑕佷箞杩愯缁撴灉鍜岄鏈熷畬鍏ㄤ笉涓€鏍枫€傚埆鎱岋紒浠婂ぉ鍜变滑鐢ㄥぇ鐧借瘽+瀹炴搷妗堜緥锛屾妸杩欏眰绐楁埛绾告崊鐮达紒


馃殌 鎶€宸т竴锛氭柟娉曢噸鍐欎笉鏄鍒剁矘璐达紒浣犲緱鎳傝鐭?/h3>

鈥?strong>鈥嬫牳蹇冮棶棰樷€?/strong>鈥嬶細瀛愮被涓哄暐瑕侀噸鍐欑埗绫绘柟娉曪紵鐩存帴璋冪敤涓嶈鍚楋紵
涓句釜渚嬪瓙鍝堬紝鍋囪浣犵埞锛堢埗绫伙級鏈変釜鍋氶キ()鏂规硶鍙細鐓场闈紝鑰屼綘锛堝瓙绫伙級瀛︿細浜嗙倰鑿溿€傝繖鏃跺€欏氨寰椻€?strong>鈥嬮噸鍐?Override)鈥?/strong>鈥嬭繖涓柟娉曪紝鍚﹀垯鍏ㄥ姘歌繙鍙兘鍚冩场闈紒

java澶嶅埗
// 鐖剁被锛氬帹鎴垮皬鐧?/span>
class Father {
    void 鍋氶キ() {
        System.out.println("鐓场闈?..");
    }
}

// 瀛愮被锛氭柊涓滄柟姣曚笟
class Son extends Father {
    @Override  // 馃敟 鍏抽敭绗﹀彿鍒紡浜嗭紒
    void 鍋氶キ() {
        System.out.println("绾㈢儳鑲?娌圭剸澶ц櫨锛?);
    }
}

鈥?strong>鈥嬮伩鍧戞寚鍗椻€?/strong>鈥嬶細

  1. 鏂规硶鍚嶃€佸弬鏁板垪琛ㄥ繀椤诲拰鐖剁被鈥?strong>鈥嬩竴妯′竴鏍封€?/strong>鈥嬶紙澶у皬鍐欓兘涓嶈兘閿欙級
  2. 璁块棶鏉冮檺涓嶈兘姣旂埗绫绘洿涓ユ牸锛堟瘮濡傜埗绫绘槸public锛屽瓙绫讳笉鑳芥敼鎴恜rivate锛?/li>
  3. 杩斿洖绫诲瀷濡傛灉鏄熀鏈被鍨嬶紙濡俰nt锛夛紝蹇呴』瀹屽叏涓€鑷达紱濡傛灉鏄璞$被鍨嬶紙濡係tring锛夛紝鍙互鏄叾瀛愮被

鈿?鎶€宸т簩锛歴uper璋冪敤涓嶆槸鎽嗚锛佷笁澶у疄鎴樺満鏅?/h3>

鈥?strong>鈥嬬伒榄傛嫹闂€?/strong>鈥嬶細閲嶅啓涔嬪悗杩樻兂鐢ㄧ埗绫诲師鏉ョ殑鏂规硶鎬庝箞鍔烇紵
杩欐椂鍊欏氨璇ョキ鍑衡€?strong>鈥媠uper鈥?/strong>鈥嬪叧閿瓧浜嗭紒浣?0%鐨勬柊鎵嬪彧鐢ㄨ繃鏈€鍩虹鐨勫Э鍔匡細

java澶嶅埗
@Override
void 鍋氶キ() {
    super.鍋氶キ(); // 鍏堢叜娉¢潰鍨倸瀛?/span>
    System.out.println("鍐嶅姞涓ら亾纭彍锛?);
}

鍏跺疄super杩樿兘杩欎箞鐜煈?/p>

鍦烘櫙浠g爜绀轰緥瀹為檯鏁堟灉
璋冪敤鐖剁被鏋勯€犳柟娉?/td>super(name, age);馃彈锔?鍒涘缓瀵硅薄鏃跺垵濮嬪寲鐖剁被灞炴€?/td>
澶氱骇缁ф壙涓法绾ц皟鐢?/td>super.parentMethod();馃摝 璺宠繃鐩存帴鐖剁被鎵炬洿涓婂眰
鎺ュ彛榛樿鏂规硶鍐茬獊瑙e喅鎺ュ彛鍚?super.鏂规硶鍚?);馃挕 JDK8+鐗规€э紝瑙e喅閽荤煶闂

鈥?strong>鈥嬭娉暀璁€?/strong>鈥嬶細Android寮€鍙戦噷缁忓父瑙佸埌杩欑浠g爜鈥斺€斿湪鑷畾涔塚iew鏃讹紝鏃㈡兂淇濈暀绯荤粺鎺т欢鐨勮Е鎽稿弽棣堬紝鍙堟兂娣诲姞鏂板姛鑳姐€傝繖鏃跺€欎笉鍔爏uper.onTouchEvent()鐨勮瘽...鎭枩浣狅紝婊戝姩鏁堟灉鐩存帴娑堝け锛?/p>


馃挕 鎶€宸т笁锛氭柟娉曞啿绐侊紵鐪嬫垜鍥涗袱鎷ㄥ崈鏂?/h3>

鈥?strong>鈥嬪疄鎴橀毦棰樷€?/strong>鈥嬶細褰撶埗绫诲拰鎺ュ彛鏈夊悓鍚嶆柟娉曟€庝箞鍔烇紵
涓句釜鐪熷疄妗堜緥锛氬仛鐢靛晢APP鏃讹紝鍟嗗搧璇︽儏椤垫棦瑕佺户鎵垮熀纭€椤甸潰缁撴瀯锛屽張瑕佸疄鐜颁績閿€娲诲姩鐨勭壒鏁堟帴鍙c€傜粨鏋滀咯鐖归兘鏈?code>render()鏂规硶锛岀洿鎺ョ偢閿咃紒

java澶嶅埗
class ProductPage extends BasePage implements PromotionEffect {
    void render() {
        // 鍒板簳璇ョ敤鍝釜锛燂紵
    }
}

鈥?strong>鈥嬭В鍐虫柟妗堜笁鏉挎枾鈥?/strong>鈥嬶細
1锔忊儯 鈥?strong>鈥嬩紭鍏堜娇鐢ㄧ被鏂规硶鈥?/strong>鈥嬶紙Java寮哄埗瑙勫畾绫讳紭鍏堜簬鎺ュ彛锛?br/> 2锔忊儯 鈥?strong>鈥嬫帴鍙e啿绐佺敤鏄庣‘璋冪敤鈥?/strong>鈥嬶細PromotionEffect.super.render();
3锔忊儯 鈥?strong>鈥嬬粓鏋佹潃鎷涒€斺€旀敼鍚嶁€?/strong>鈥嬶細鏀规帀鎺ュ彛鏂规硶鍚嶏紙鍓嶆彁鏄綘鑳芥帶鍒舵帴鍙d唬鐮侊級


馃幆 鐙鏁版嵁锛?0%鐨勫垵瀛﹁€呮牻鍦ㄨ繖浜涘潙閲岋紒

鏍规嵁鏌愬煿璁満鏋?涓囦唤浣滀笟缁熻锛?/p>

  1. 48%鐨勪汉蹇樿鍐橜Override瀵艰嚧鎰忓閲嶈浇
  2. 32%鐨勪汉鍦ㄥ灞傜户鎵夸腑閿欒浣跨敤super閾?/li>
  3. 20%鐨勪汉鍒嗕笉娓呴噸鍐?Override)鍜岄噸杞?Overload)

鈥?strong>鈥嬮伩鍧慣IP鈥?/strong>鈥嬶細璁颁綇杩欎釜椤哄彛婧滒煈?br/> 鈥滀袱鍚屼袱灏忎竴涓嶅ぇ锛岄噸鍐欒鐭╄璁扮墷銆?br/> 鏂规硶鍚嶅弬蹇呴』鍚岋紝杩斿洖绫诲瀷鍙缉灏忋€?br/> 寮傚父涓嶈兘鏇村娉涳紝璁块棶鏉冮檺鍒缉灏忋€傗€?/p>


馃尠 璇寸偣鏁欑涔﹂噷涓嶄細鍐欑殑

骞蹭簡浜斿勾Java寮€鍙戯紝鍙戠幇寰堝浜烘妸缁ф壙鏈哄埗鐢ㄦ垚浜嗏€滆姳鏋跺瓙鈥濄€傚叾瀹炩€?strong>鈥嬩笉瑕佷负浜嗙户鎵胯€岀户鎵库€?/strong>鈥嬶紒姣斿宸ュ叿绫昏繖绉嶉潤鎬佹柟娉曢泦鍚堬紝寮鸿缁ф壙鍙嶈€屽鍔犲鏉傚害銆?/p>

涓嬫鐪嬪埌鍚屼簨鍐欏嚭杩欐牱鐨勪唬鐮侊細

java澶嶅埗
class StringUtil extends BaseUtil { ... }

鍙互鐩存帴鎬间粬锛氣€滃厔寮燂紝鏀圭敤闈欐€佸鍏ヤ笉棣欏悧锛熲€濓紙绗戯級


锛堝叏鏂囧畬锛夌湅鍒拌繖鍎跨殑灏忎紮浼达紝璧剁揣鎵撳紑IDE鍐欐浠g爜璇曡瘯鍚э紒閬囧埌闂娆㈣繋璇勮鍖虹牳杩囨潵~

搜索