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>鈥嬶細
-
鈥?strong>鈥嬩负鍟uper鍙兘鎵剧洿绯讳翰灞烇紵鈥?/strong>鈥?br/> Java璁捐鑰呮棭灏辨枡鍒板灞傜户鎵夸細涔卞锛屾墍浠ヨ瀹歴uper鍙兘璁块棶鐩存帴鐖剁被锛屽氨鍍忓鏃忎細璁繀椤绘寜杈堝垎鍙戣█
-
鈥?strong>鈥嬬埛鐖风殑鏂规硶鐪熺殑琚皝鍗颁簡鍚楋紵鈥?/strong>鈥?br/> No锛佹柟娉曡繕鍦ㄥ唴瀛橀噷韬虹潃鍛紝鍙槸璁块棶璺緞琚埗绫昏鐩栦簡锛屽氨鍍忓浘涔﹂鐨勪功琚柊涔︽尅浣忎簡
-
鈥?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();
}
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>
鍘诲勾鏈変釜鐢靛晢椤圭洰灏辨牻鍦ㄨ繖浜嬪効涓婏細
- 鏂颁汉鐢ㄥ弽灏勫己琛岃皟鐢ㄧ埛鐖风被鏂规硶
- 涓婄嚎鍚庣埗绫绘柟娉曡淇敼鍙傛暟
- 瀵艰嚧姣忓ぉ鍑屾櫒璁㈠崟缁撶畻鍏ㄦ寕
鈥?strong>鈥嬪悗鏉ユ垜浠偀浜嗏€?/strong>鈥嬶細鈥?strong>鈥嬩笌鍏跺拰Java鐨勭户鎵挎満鍒剁‖鍒氾紝涓嶅閲嶆柊璁捐绫诲叧绯烩€?/strong>鈥嬨€傚氨鍍忓閲岀殑鑰佺墿浠讹紝涓庡叾缈荤獥鎴峰幓闃佹ゼ鎵撅紝涓嶅鏁寸悊濂芥斁鍦ㄥ鏄撴嬁鐨勪綅缃€?/p>
鐜板湪閬囧埌绫讳技闇€姹傦紝鎴戠殑绗竴鍙嶅簲鏄細
- 杩欎釜鍔熻兘鐪熺殑搴旇鏀惧湪鐖风埛绫诲悧锛?/li>
- 鑳戒笉鑳界敤缁勫悎浠f浛缁ф壙锛?/li>
- 鏄笉鏄鑰冭檻绛栫暐妯″紡锛?/li>
鈥?strong>鈥嬭浣忓晩鏈嬪弸浠€?/strong>鈥嬶細鈥?strong>鈥嬪ソ鐨勪唬鐮佺粨鏋勫氨鍍忔暣鐞嗘湁搴忕殑琛f煖锛屼笉闇€瑕佹挰閿佸氨鑳芥壘鍒版兂瑕佺殑琛f湇鈥?/strong>鈥嬨€備笅娆″啀閬囧埌super鐨勮皟鐢ㄩ檺鍒讹紝涓嶅Θ鍏堥棶闂嚜宸扁€斺€旀槸涓嶆槸绫荤殑鑱岃矗鍒掑垎鏈韩灏辨湁闂锛?/p>
本文由嘻道妙招独家原创,未经允许,严禁转载