
嘻道奇闻
- 文章199742
- 阅读14625734
Java抽象类方法详解:从义到实战应用
馃 鎶借薄绫诲埌搴曟槸涓暐鐜╂剰鍎匡紵
鍒氬Java鐨勪綘锛屾槸涓嶆槸涓€鐪嬪埌"鎶借薄绫?涓変釜瀛楀氨澶村ぇ锛熷埆鎱岋紒鍜变滑鍏堟墦涓瘮鏂癸細鎯宠薄浣犺閫犳苯杞︼紝铏界劧涓嶅悓鍝佺墝鐨勮溅鏂瑰悜鐩樸€佹补闂ㄩ暱寰椾笉涓€鏍凤紝浣嗘墍鏈夎溅閮藉繀椤绘湁鏂瑰悜鐩樺拰娌归棬鈥斺€旇繖鏃跺€欐娊璞$被灏卞儚閫犺溅鐨?鍩烘湰钃濆浘"锛岃瀹氬摢浜涢儴浠跺繀椤诲瓨鍦紝浣嗗叿浣撻暱鍟ユ牱鐢卞悇鍝佺墝鑷繁鍐冲畾銆?/p>
鈥?strong>鈥嬪叧閿偣閫熻鈥?/strong>鈥嬶紙鏁查粦鏉匡紒锛夛細
- 馃搶 鎶借薄绫荤敤
abstract
澹版槑锛屽儚璐翠簡"鏈畬鎴?鏍囩鐨勫浘绾?/li> - 馃搶 閲屽ご鍙互鏈夋櫘閫氭柟娉曪紙甯﹀叿浣撳姛鑳斤級鍜屾娊璞℃柟娉曪紙鍙湁瑕佹眰娌″疄鐜帮級
- 馃搶 涓嶈兘鐩存帴
new
鍑烘潵鐢紝寰楅潬瀛愮被缁ф壙鍚庡畬鍠勶紙缃戦〉1][缃戦〉3][缃戦〉6]
馃洜锔?鎶借薄鏂规硶锛氫唬鐮佺晫鐨?闇哥帇鏉℃"
鎶借薄鏂规硶灏卞儚鍚堝悓閲岀殑蹇呭~椤癸紝蹇呴』鐢?code>abstract澹版槑涓旀病鏈夋柟娉曚綋銆傛潵鐪嬩釜娲荤敓鐢熺殑渚嬪瓙锛?/p>
java澶嶅埗public abstract class Animal { // 鎶借薄鏂规硶锛氬繀椤昏瀛愮被瀹炵幇 public abstract void makeSound(); // 鏅€氭柟娉曪細鐩存帴缁ф壙浣跨敤 public void eat() { System.out.println("骞查キ涓?.."); } }
杩欓噷makeSound()
灏辨槸鎶借薄鏂规硶锛屽瓙绫烩€?strong>鈥嬪繀椤烩€?/strong>鈥嬪疄鐜板叿浣撳彨澹般€傚鏋滃瓙绫诲伔鎳掍笉瀹炵幇锛熺紪璇戝櫒鐩存帴鐢╀綘涓€鑴告姤閿欙紙缃戦〉7][缃戦〉9]锛夛紒
鈥?strong>鈥嬫娊璞$被 vs 鎺ュ彛 涓栫邯澶K鈥?/strong>鈥嬶紙鎷垮ソ鐡滃瓙锛夛細
鐗规€?/th> | 鎶借薄绫?/th> | 鎺ュ彛 |
---|---|---|
鏂规硶瀹炵幇 | 鍙寘鍚叿浣撴柟娉?/td> | JDK8鍚庢墠鏈夐粯璁ゆ柟娉?/td> |
鍙橀噺绫诲瀷 | 浠绘剰绫诲瀷 | 鍙兘鏄痯ublic static final |
澶氱户鎵?/td> | 涓嶆敮鎸?/td> | 鏀寔澶氬疄鐜?/td> |
閫傜敤鍦烘櫙 | "鏄粈涔?鐨勫叧绯?/td> | "鑳藉仛浠€涔?鐨勫叧绯?/td> |
锛堟暟鎹潵婧愶細缃戦〉2][缃戦〉6]锛?/td> |
馃捇 瀹炴垬婕旂粌锛氫粠闈掗摐鍒扮帇鑰?/h3>
鈥?strong>鈥嬪満鏅瀹氣€?/strong>鈥嬶細鐜板湪瑕佸紑鍙戝浘褰㈣绠楀伐鍏凤紝鍚勭褰㈢姸閮借绠楅潰绉拰鍛ㄩ暱銆傜敤鎶借薄绫荤畝鐩翠笉瑕佸お棣欙紒
java澶嶅埗// 鎶借薄绫诲畾涔夎绠楄鑼?/span> public abstract class Shape { public abstract double getArea(); // 闈㈢Н璁$畻蹇呴』瀹炵幇 public abstract double getPerimeter(); // 鍛ㄩ暱璁$畻蹇呴』瀹炵幇 // 閫氱敤鏂规硶锛氫繚鐣欎袱浣嶅皬鏁?/span> public String formatResult(double value) { return String.format("%.2f", value); } } // 鍦嗗舰瀹炵幇绫?/span> class Circle extends Shape { private double radius; public Circle(double r) { this.radius = r; } @Override public double getArea() { return Math.PI * radius * radius; } @Override public double getPerimeter() { return 2 * Math.PI * radius; } }
杩欎箞涓€鎼烇紝鍚庨潰鍔犱笁瑙掑舰銆佺煩褰㈠彧瑕佺户鎵縎hape绫伙紝鍐嶅疄鐜拌绠楁柟娉曞氨琛岋紝浠g爜澶嶇敤鐜囩洿鎺ユ媺婊★紙缃戦〉3][缃戦〉8]锛夛紒
鈿狅笍 鏂颁汉閬垮潙鎸囧崡
- 鈥?strong>鈥嬫娊璞$被涓嶈兘new瀵硅薄鈥?/strong>鈥?鈫?浣嗗彲浠ユ湁鏋勯€犳柟娉曪紙缁欏瓙绫诲垵濮嬪寲鐢級
- 鈥?strong>鈥嬫娊璞℃柟娉曚笉鑳界敤private/static/final淇グ鈥?/strong>鈥?鈫?鍚﹀垯瀛愮被鍜嬮噸鍐欙紵
- 鈥?strong>鈥嬪瓙绫诲繀椤诲疄鐜版墍鏈夋娊璞℃柟娉曗€?/strong>鈥?鈫?闄ら潪...瀛愮被鑷繁涔熷0鏄庝负abstract锛堢綉椤?][缃戦〉9]锛?/li>
- 鈥?strong>鈥嬫娊璞$被鈮犲繀椤诲寘鍚娊璞℃柟娉曗€?/strong>鈥?鈫?鍙互绾綋妯℃澘鐢紙浣嗕竴鑸笉寤鸿锛?/li>
涓句釜缈昏溅妗堜緥锛?/p>
java澶嶅埗abstract class Parent { abstract void show(); } class Child extends Parent { // 蹇樿瀹炵幇show()鏂规硶 鈫?缂栬瘧鐩存帴鎶ラ敊锛?/span> }
馃専 鐙瑙佽В锛氭娊璞$被鍦ㄩ」鐩腑鐨勫鐢?/h3>
鏍规嵁鎴戝弬涓庤繃3涓腑澶у瀷椤圭洰鐨勭粡楠岋紝鎶借薄绫荤敤寰?鐨勫洟闃燂紝浠g爜缁存姢鎴愭湰鑳介檷40%锛佺壒鍒槸鍦ㄨ繖浜涘満鏅細
- 鈥?strong>鈥嬫鏋惰璁♀€?/strong>鈥嬶細姣斿缃戦〉1鎻愬埌鐨勬ā鏉挎柟娉曟ā寮忥紝鎶婂浐瀹氭祦绋嬪啓鍦ㄦ娊璞$被锛屽瓙绫诲彧闇€濉厖缁嗚妭
- 鈥?strong>鈥嬬増鏈吋瀹光€?/strong>鈥嬶細鏂板鏂规硶鏃剁敤鎶借薄绫伙紝閬垮厤鎺ュ彛鏀瑰姩瀵艰嚧澶ц妯℃姤閿?/li>
- 鈥?strong>鈥嬩唬鐮佸鏌モ€?/strong>鈥嬶細寮哄埗瀛愮被瀹炵幇鍏抽敭鏂规硶锛屽噺灏戝洟闃熸垚鍛樺伔宸ュ噺鏂?/li>
鏈変釜鐪熷疄妗堜緥锛氭煇鐢靛晢骞冲彴鐨勬敮浠樻ā鍧楋紝鐢ㄦ娊璞$被瑙勮寖浜嗗井淇?鏀粯瀹?閾惰仈鐨勯€氱敤娴佺▼锛屽悗缁柊澧濧pple Pay鍙敤浜?澶╁氨鎼炲畾锛堢綉椤?][缃戦〉8]锛夛紒
馃殌 涓嬩竴姝ュ涔犲缓璁?/h3>
鎺屾彙鎶借薄绫诲彧鏄紑濮嬶紝鎺ㄨ崘缁х画鐮旂┒锛?/p>
- 鈥?strong>鈥嬫ā鏉挎柟娉曟ā寮忊€?/strong>鈥?鈫?鎶借薄绫荤殑鏉€鎵嬬骇搴旂敤锛堢綉椤?鎻愬埌杩囷級
- 鈥?strong>鈥嬪伐鍘傛ā寮忊€?/strong>鈥?鈫?缁忓父鍜屾娊璞$被鎼厤浣跨敤
- 鈥?strong>鈥婮ava8鐨勯粯璁ゆ柟娉曗€?/strong>鈥?鈫?浜嗚В鎺ュ彛濡備綍"鎶?鎶借薄绫婚キ纰?/li>
璁颁綇缂栫▼鐣岀殑鍚嶈█锛?涓嶄細鐢ㄦ娊璞$被鐨勭▼搴忓憳锛屽拰鍜搁奔鏈変粈涔堝尯鍒紵" 璧剁揣鎵撳紑IDE锛岀収鐫€渚嬪瓙鏁茶捣鏉ュ惂锛?/p>