]]>jdk闆嗗悎綾葷殑璁捐涔嬩竴http://www.tkk7.com/zhqh/articles/222021.htmlzhqhzhqhThu, 14 Aug 2008 07:34:00 GMThttp://www.tkk7.com/zhqh/articles/222021.htmlhttp://www.tkk7.com/zhqh/comments/222021.htmlhttp://www.tkk7.com/zhqh/articles/222021.html#Feedback0http://www.tkk7.com/zhqh/comments/commentRss/222021.htmlhttp://www.tkk7.com/zhqh/services/trackbacks/222021.html
鍠滄榪欐牱鐨勭綉鍚楋紵铏界劧錛屼笢瑗挎瘮杈冨錛屼絾鏄紝榪樻槸铔竻鏅扮殑銆傛棤璁轟綘鍠滄涓庡惁錛岃繖紜疄鏄釜濂戒笢瑗匡紝鍑鴻嚜浜嶴UN鍏徃鐨勭墰浜轟箣浣溿傚畠鏄疛DK閲岀殑闆嗗悎閮ㄥ垎銆傚綋鐒訛紝榪欐牱鐨勪笢瑗匡紝鍙兘綆楁槸utilClass,濡傛灉浣犱笉鎯崇敤錛屽畬鍏ㄥ彲浠ヨ嚜宸遍犲嚑涓疆瀛愶紝鍙嶆錛屾垜鏄笉浼氬幓閫犵殑錛岄櫎闈炴弧瓚充笉浜嗛渶姹傘?
榪欎釜綾誨眰嬈″熀鏈槸鍩轟簬鎺ュ彛鐨勩備粠欏跺眰鍒頒笅灞傦紝涓婂眰閮芥槸浠ユ娊璞″憟鐜扮殑銆傜劧鍚庯紝涓嬪眰鏄叿浣撶殑瀹炵幇綾匯傝繖娌″暐濂借鐨勶紝浣嗘槸錛屽叧閿槸錛屽鏋滆浣犺璁¤繖涓殑涓涓泦鍚堢被灞傛銆備綘浼氭庝箞璁捐鍛紵褰撶劧錛岃窇寰楄搗鏉ョ殑浠g爜涔熷彨璁捐錛岃繖閲屽氨瀛樺湪濂界殑璁捐涓庣碂緋曠殑璁捐涔嬪垎浜嗐傛墍浠ワ紝璁捐鏃惰鑰冭檻寰堝鍥犵礌錛屾瘮濡傚彲鎵╁睍鎬у暒錛屽彲緇存姢鎬у暒錛岄潰鍚戞娊璞$紪紼嬪暒錛孲RP錛孫CP絳夊嚑涓潰鍚戝璞¤璁″師鍒欏暒錛屽弽姝e氨鏄緢澶氾紝澶уぇ灝忓皬鐨勭患鍚堝洜绱犳潈琛″嚭涓涓璁$粨鏋溿傝繕鏈夛紝鍗冧竾涓嶈灝忕湅瀵逛簬榪欐牱鐨勭被灞傛鐨勬繁鍒葷悊瑙o紝瀹冨浜庝綘鐨勯潰鍚戝璞℃濇兂鏈夌潃鏋佸ぇ鐨勫府鍔┿傛煇鏌愬ぉ錛屼綘鍙備笌浜嗕竴涓」鐩紝棣栧厛寰椾細鍋氳璁″摝錛屽茍涓旓紝寰楄璁″ソ錛屼笉鐒訛紝鏋舵瀯甯堝氨絀烘湁鍏跺悕浜嗐?褰撴垜鍦ㄦ濊冭繖涓富棰樻椂錛屾垜浜х敓浜嗕笉灝戞兂娉曘傛湁浜涘彲鑳芥槸涓嶆垚鐔熺殑銆傝繕鏄垪鍑烘潵涓嬨?
1. 鑷笂鑰屼笅璁捐
2. 鑷笅鑰屼笂璁捐
3. 鍩轟簬鎺ュ彛鐨勫涓涓烘湁寮傜殑綾葷戶鎵胯璁?
1 . 鑷笂鑰屼笅璁捐
姒傚康寰堟槑紜紝灝辨槸浠庢帴鍙f娊璞$被寮濮嬨備絾鏄紝浣犲繀欏誨浜庡嚑涓叿浣撳疄鐜扮殑鎶借薄閮ㄥ垎鏈夌潃娓呮櫚鐨勮璇嗐傚茍涓斾綘澶ц嚧浜嗚В浜嗚繖浜涘叿浣撳疄鐜扮被鐨勮妯′互鍙婅亴璐f墍鍦紝鍚﹀垯灝卞彉鎴愪簡寮傚艦銆傜劧鑰岋紝璁捐鏈韓鏄釜璺屼唬鐨勮繃紼嬶紝鎵浠ワ紝榪欐槸涓笉閿欑殑閫夋嫨鏂規銆?
2銆傝嚜涓嬭屼笂璁捐
浣犱笉浜嗚В鍏蜂綋瀹炵幇綾葷殑瑙勬ā浠ュ強鑱岃矗鎵鍦紝浣犲彧鏄殢鎰忔垨鑰呬粎浠呴拡瀵逛簬鏌愪竴闇姹傦紝鍐欎簡涓涓緟鍔╃被銆傚綋鐒訛紝浣犵煡閬撹繖涓被鏄釜鏈夌姸鎬佺被錛屽悓鏃訛紝瀹冧技涔庡湪鏌愪釜鏃跺埢璺熷埆浜烘湁鐫鏌愭煇鍏崇郴錛堜笉鐭ラ亾鏄戶鎵胯繕鏄鎵橈級錛屾墍浠ワ紝浣犳病鎶婅繖涓被璁捐鎴愪負abstract, final, private constrcutor,OK錛屼綘鍙槸淇濈暀鐫榪欑鍙樺寲銆傜劧鍚庯紝浣犲張鍐欎簡涓涓被錛岀劧鍚庯紝鍙戠幇榪欎袱涓被鏈夌潃鍏卞悓鐨勯儴鍒嗐傜劧鍚庯紝鍙堝啓浜嗕竴涓紝鍙戠幇浜嗕笉灝戞柊鐨勪笢瑗褲傛仼錛屽緢濂斤紝闇瑕佸姩浣滀簡錛屼綘寮濮嬫濊冩庝箞鐢ㄨ璁℃ā寮忔妸榪欎簺鍏卞悓閮ㄥ垎錛堝彲鑳藉湪涓嶅悓綾繪湁涓嶅悓鐨勫疄鐜幫級緇勭粐璧鋒潵銆傚浜庯紝鎶借薄鏂規硶錛宼emplate妯″紡鑳藉府浣犺В鍐沖ぇ閮ㄥ垎闂銆傚悓鏃訛紝浣犻渶瑕佸埌濮旀墭錛屾墍浠ワ紝浣犺繕寰楄冭檻鎬庝箞浣跨敤濮旀墭鎵嶈兘寰楀埌鑹ソ鐨勮璁?---鍙弬鑰冭璁℃ā寮忎箣榪涘寲璁恒?
3銆傚熀浜庢帴鍙g殑澶氫釜琛屼負鏈夊紓鐨勭被緇ф壙璁捐
鏃犺閲囩敤鍝竴縐嶆柟寮忓仛璁捐銆傞兘鑳藉緱鍒版渶緇堢殑濂界粨鏋溿傝岀粨鏋滀篃鍩烘湰鏄竴鑷寸殑銆?
涓嬮潰鏄釜渚嬪瓙銆?
浣犲啓浜嗕竴涓帴鍙?騫朵笖鎻愪緵浜嗕袱瀹炵幇綾匯?
interface MyInterface{
public void println();
public void print();
public int size();
public boolean isEmpty();
}
class MyConcreteClassA implements MyInterface{
public boolean isEmpty() {
return size() == 0;
}
public void print() {
System.out.print("A");
}
public void println() {
System.out.println("A");
}
public int size() {
return 0;
}
}
class MyConcreteClassB implements MyInterface{
public boolean isEmpty() {
return size() == 0;
}
public void print() {
System.out.print("B");
}
public void println() {
System.out.println("B");
}
public int size() {
return 0;
}
}
鐒惰岋紝浣犲張鍙戠幇榪欎袱涓疄鐜扮被涓湁鐫鍏卞悓鐨勪笢瑗?-isEmpty鏂規硶銆傛墍浠ワ紝浣犲緱鎻愬彇鍑烘潵錛岄《灞傛槸涓帴鍙o紝娌℃硶鏀懼疄鐜頒綋銆傛斁鍝噷鍛紵鏈変竴涓ソ鐨勫姙娉曪紝灝辨槸鎶婃帴鍙f敼鎴愭娊璞$被銆傝浣忥紝鎺ュ彛鐨勬潯浠舵瘮鎶借薄綾繪洿寮恒傛敼閫犲涓嬶細
abstract class MyAbstractClass{
public abstract void println();
public abstract void print();
public abstract int size();
public boolean isEmpty(){
return size() == 0;
}
}
class MyConcreteClassA extends MyAbstractClass{
public void print() {
System.out.print("A");
}
public void println() {
System.out.println("A");
}
public int size() {
return 0;
}
}
class MyConcreteClassB extends MyAbstractClass{
public void print() {
System.out.print("B");
}
public void println() {
System.out.println("B");
}
public int size() {
return 0;
}
}
榪欎釜template妯″紡甯綘瑙e喅浜嗛棶棰樸傚悓鏃訛紝浣犱篃鑳戒繚鎸佷綇鍩轟簬鎶借薄緙栫▼榪欎釜濂戒笢瑗褲?
閭d箞錛岃繕鏈変竴縐嶆柟妗堬紝涔熷氨鏄疛DK璁捐鎵浣跨敤鐨勩?
interface MyInterface{
public void println();
public void print();
public int size();
public boolean isEmpty();
}
abstract class MyAbstractClass implements MyInterface{
public abstract void println(); --------錛?錛?
public abstract void print(); --------錛?錛?
public abstract int size();
public boolean isEmpty(){
return size() == 0;
}
}
class MyConcreteClassA extends MyAbstractClass implements MyInterface{ --------錛?錛?
public void print() {
System.out.print("A");
}
public void println() {
System.out.println("A");
}
public int size() {
return 0;
}
}
class MyConcreteClassB extends MyAbstractClass implements MyInterface{ --------錛?錛?
public void print() {
System.out.print("B");
}
public void println() {
System.out.println("B");
}
public int size() {
return 0;
}
}
璇存槑錛氭娊璞$被MyAbstractClass 鐨勬娊璞℃柟娉曪紙1錛夊拰錛?錛夊彲浠ヤ笉蹇呮樉寮忓啓鍑烘潵銆傚洜涓烘娊璞$被浼氱戶鎵挎帴鍙g殑鎶借薄鏂規硶銆傚悓鏃訛紝綾籑yConcreteClassA 瀹氫箟涓紙3錛夌殑implements MyInterface{ 涔熷彲浠ヤ笉鏄懼紡鍐欏嚭銆傚敖綆″浜嗕竴涓腑闂存娊璞$被MyAbstractClass 灞傦紙鏈変簺鍏叡鏂規硶鎴栬呯己鐪佹柟娉曞凡鍦ㄦ瀹炵幇錛夛紝浣嗘槸榪樻槸蹇呴』瀹炵幇MyInterface涓墿涓嬬殑鎵鏈夋帴鍙f柟娉曘?
榪欐牱鐨勭粨鏋滐紝寰堝ソ銆傛墍鏈夊叿浣撶被鐨勫叕鍏辨柟娉曡鎶借薄鍩虹被瀹炵幇浜嗭紝鍚屾椂錛屽叿浣撶被涔熷彲浠ヨ鐩栧熀綾葷殑緙虹渷鏂規硶銆傚浜庡瓙綾繪槸鍚︽敮鎸佹煇涓涓帴鍙f柟娉曠殑瑙e喅錛屽湪鎶借薄鍩虹被涓疄鐜頒竴涓己鐪佺殑鏂規硶鏇存槸鏈夋晥銆傚惁鍒欙紝灝辯畻鏄煇涓瀛愮被涓嶆敮鎸佽鏂規硶錛屼篃蹇呴』琚疄鐜般傛瘮濡傦紝浣爐hrow浜嗕竴涓?UnsupportedOperationException寮傚父銆傝繖鏍峰緢涓嶅ソ銆?/div>