鈥媠uper鍏抽敭瀛楀氨鍍忎釜鍊旇劸姘旂殑灏忓鈥斺€旀槑鏄庣埛鐖峰氨鍦ㄦゼ涓婏紝瀹冨嵈姝绘椿鍙偗鎵剧?" />
  1. 主页 > 大智慧

Java super关键字能否调用爷爷类方法?解决方案

鍝庡懄锛岃繖涓棶棰樺彲鎶婁笉灏慗ava鏂颁汉鏁存嚨浜嗭紒鍜变滑浠婂ぉ灏辨潵鎵掍竴鎵掕繖涓户鎵块摼閲岀殑"瀹跺涵浼︾悊鍓?銆傗€?strong>鈥媠uper鍏抽敭瀛楀氨鍍忎釜鍊旇劸姘旂殑灏忓鈥斺€旀槑鏄庣埛鐖峰氨鍦ㄦゼ涓婏紝瀹冨嵈姝绘椿鍙偗鎵剧埜鐖糕€?/strong>鈥嬨€傝繖鑳屽悗鍒板簳钘忕潃浠€涔堢瀵嗭紵鍜变滑鍒嗕笁涓淮搴﹀眰灞傝В鍓栵紒


涓€銆佸熀纭€鎷烽棶锛歴uper鐨?娲诲姩鑼冨洿"绌剁珶鍦ㄥ摢锛?/h3>

鈥?strong>鈥嬩妇涓牀瀛愨€?/strong>鈥嬶細涓変唬鍚屽爞鐨勭户鎵跨粨鏋?/p>

java澶嶅埗
class 鐖风埛 {
    void 璁叉晠浜?) { System.out.println("涓夊浗婕斾箟"); }
}
class 鐖哥埜 extends 鐖风埛 {
    @Override void 璁叉晠浜?) { System.out.println("鏍兼灄绔ヨ瘽"); }
}
class 鍎垮瓙 extends 鐖哥埜 {
    void 鍚晠浜?) {
        super.璁叉晠浜?); // 杩欓噷鍙兘璋冪敤鐖哥埜鐨勬柟娉?/span>
    }
}

鈥?strong>鈥嬬伒榄備笁闂€?/strong>鈥嬶細

  1. 鈥?strong>鈥嬩负鍟uper鍙兘鎵剧洿绯讳翰灞烇紵鈥?/strong>鈥?br/> Java璁捐鑰呮棭灏辨枡鍒板灞傜户鎵夸細涔卞锛屾墍浠ヨ瀹歴uper鍙兘璁块棶鐩存帴鐖剁被锛屽氨鍍忓鏃忎細璁繀椤绘寜杈堝垎鍙戣█

  2. 鈥?strong>鈥嬬埛鐖风殑鏂规硶鐪熺殑琚皝鍗颁簡鍚楋紵鈥?/strong>鈥?br/> No锛佹柟娉曡繕鍦ㄥ唴瀛橀噷韬虹潃鍛紝鍙槸璁块棶璺緞琚埗绫昏鐩栦簡锛屽氨鍍忓浘涔﹂鐨勪功琚柊涔︽尅浣忎簡

  3. 鈥?strong>鈥嬭繖绉嶈璁℃湁浠€涔堝ソ澶勶紵鈥?/strong>鈥?br/> 闃叉"闅斾唬鏁欒偛"寮曞彂娣蜂贡锛岀‘淇濈被涔嬮棿鐨勫叧绯绘竻鏅板彲鎺?/p>


浜屻€佸疄鎴樺満鏅細褰撶埗绫?绡℃敼"浜嗙浼犳柟娉?/h3>

鍋囪鐜板湪鏈変釜鏀粯绯荤粺锛?/p>

java澶嶅埗
class 鑰佺増鏀粯 {
    void 楠岃瘉() { System.out.println("鐭俊楠岃瘉鐮?); }
}

class 鏂扮増鏀粯 extends 鑰佺増鏀粯 {
    @Override void 楠岃瘉() { System.out.println("浜鸿劯璇嗗埆"); }
}

class 绱ф€ラ€氶亾 extends 鏂扮増鏀粯 {
    // 杩欓噷鎯宠皟鐢ㄨ€佺増鐨勭煭淇¢獙璇佹€庝箞鍔烇紵
}

鈥?strong>鈥嬪父瑙佺炕杞︾幇鍦衡€?/strong>鈥嬶細

  • 鐩存帴鍐?code>super.楠岃瘉() 鈫?璋冪敤鐨勬槸鏂扮増鏀粯鐨勪汉鑴歌瘑鍒?/li>
  • 璇曞浘鍐?code>super.super.楠岃瘉() 鈫?缂栬瘧鍣ㄧ洿鎺ユ姤閿?/li>
  • 鏆村姏淇敼鐖剁被浠g爜 鈫?鍙兘寮曞彂绯荤粺绾ф晠闅?/li>

鈥?strong>鈥嬭繖鏃跺€欎綘浼氫笉浼氭兂鈥?/strong>鈥嬶細鈥?strong>鈥嬮毦閬撹涓轰簡杩欎釜闇€姹傛帹缈绘暣涓户鎵夸綋绯伙紵鈥?/strong>鈥?鍒厡锛佸挶浠湁濡欐嫑鈥斺€?/p>


涓夈€佺牬瑙f柟妗堜笁杩炲嚮锛堥檮瀵规瘮琛ㄦ牸锛?/h3>

鏂规1锛氬弽灏勯粦绉戞妧锛堟厧鐢紒锛?/h4>
java澶嶅埗
try {
    Method 绁栦紶鏂规硶 = getClass().getSuperclass().getSuperclass()
                        .getDeclaredMethod("楠岃瘉");
    绁栦紶鏂规硶.setAccessible(true);
    绁栦紶鏂规硶.invoke(this);
} catch (Exception e) {
    e.printStackTrace();
}

鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥嬶細涓存椂鏁戞€ャ€佹祴璇曠幆澧冭皟璇?/p>

鏂规2锛氭帴鍙fˉ鎺ユ湳锛堟帹鑽愶級

java澶嶅埗
interface 浼犵粺楠岃瘉 {
    default void 鏃х増楠岃瘉() { System.out.println("鐭俊楠岃瘉鐮?); }
}

class 鏂扮増鏀粯 implements 浼犵粺楠岃瘉 {
    @Override void 楠岃瘉() { 
        System.out.println("浜鸿劯璇嗗埆"); 
    }
}

class 绱ф€ラ€氶亾 extends 鏂扮増鏀粯 {
    void 鍚敤鏃х増楠岃瘉() {
        ((浼犵粺楠岃瘉)this).鏃х増楠岃瘉();
    }
}

鏂规3锛氭ā鏉挎柟娉曟敼閫狅紙涓€鍔虫案閫革級

java澶嶅埗
class 鑰佺増鏀粯 {
    // 涓撻棬鏆撮湶缁欏瓩杈堢殑鏂规硶
    protected final void 绁栦紶楠岃瘉() { 
        System.out.println("鐭俊楠岃瘉鐮?);
    }
}

class 绱ф€ラ€氶亾 extends 鏂扮増鏀粯 {
    void 鐗规畩闇€姹?) {
        // 閫氳繃鐖风埛绫诲疄渚嬭皟鐢?/span>
        鑰佺増鏀粯 绁栦紶鐗?= new 鑰佺増鏀粯();
        绁栦紶鐗?绁栦紶楠岃瘉();
    }
}

鈥?strong>鈥嬫柟妗堝姣旀寚鍗椻€?/strong>鈥嬶細

缁村害鍙嶅皠鏂规鎺ュ彛鏂规妯℃澘鏂规
鈥?strong>鈥嬪畨鍏ㄦ€р€?/strong>鈥?/td>鈿狅笍 瀹规槗鎶ラ敊鉁?绫诲瀷瀹夊叏鉁?瀹屽叏鍚堣
鈥?strong>鈥嬪彲缁存姢鎬р€?/strong>鈥?/td>馃く 鍍忓ぉ涔?/td>馃槂 娓呮櫚鏄撹馃 闇€瑕佽璁″姛搴?/td>
鈥?strong>鈥嬫€ц兘鈥?/strong>鈥?/td>馃悽 鎱?/td>馃殌 蹇?/td>馃殌 蹇?/td>
鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥?/td>涓存椂璋冭瘯涓瀷椤圭洰澶у瀷绯荤粺

鍥涖€佽娉暀璁細閭d簺骞存垜浠俯杩囩殑鍧?/h3>

鍘诲勾鏈変釜鐢靛晢椤圭洰灏辨牻鍦ㄨ繖浜嬪効涓婏細

  1. 鏂颁汉鐢ㄥ弽灏勫己琛岃皟鐢ㄧ埛鐖风被鏂规硶
  2. 涓婄嚎鍚庣埗绫绘柟娉曡淇敼鍙傛暟
  3. 瀵艰嚧姣忓ぉ鍑屾櫒璁㈠崟缁撶畻鍏ㄦ寕

鈥?strong>鈥嬪悗鏉ユ垜浠偀浜嗏€?/strong>鈥嬶細鈥?strong>鈥嬩笌鍏跺拰Java鐨勭户鎵挎満鍒剁‖鍒氾紝涓嶅閲嶆柊璁捐绫诲叧绯烩€?/strong>鈥嬨€傚氨鍍忓閲岀殑鑰佺墿浠讹紝涓庡叾缈荤獥鎴峰幓闃佹ゼ鎵撅紝涓嶅鏁寸悊濂芥斁鍦ㄥ鏄撴嬁鐨勪綅缃€?/p>

鐜板湪閬囧埌绫讳技闇€姹傦紝鎴戠殑绗竴鍙嶅簲鏄細

  1. 杩欎釜鍔熻兘鐪熺殑搴旇鏀惧湪鐖风埛绫诲悧锛?/li>
  2. 鑳戒笉鑳界敤缁勫悎浠f浛缁ф壙锛?/li>
  3. 鏄笉鏄鑰冭檻绛栫暐妯″紡锛?/li>

鈥?strong>鈥嬭浣忓晩鏈嬪弸浠€?/strong>鈥嬶細鈥?strong>鈥嬪ソ鐨勪唬鐮佺粨鏋勫氨鍍忔暣鐞嗘湁搴忕殑琛f煖锛屼笉闇€瑕佹挰閿佸氨鑳芥壘鍒版兂瑕佺殑琛f湇鈥?/strong>鈥嬨€備笅娆″啀閬囧埌super鐨勮皟鐢ㄩ檺鍒讹紝涓嶅Θ鍏堥棶闂嚜宸扁€斺€旀槸涓嶆槸绫荤殑鑱岃矗鍒掑垎鏈韩灏辨湁闂锛?/p>

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