浠涔堟槸鍐呴儴綾誨憿錛熼【鍚嶆濅箟錛屽唴閮ㄧ被灝辨槸鍦ㄧ被涓彲浠ュ畾涔夊彟涓涓殑綾匯傚唴閮ㄧ被鏄閮ㄥ璞$殑涓涓垚鍛橈紝鍚屾牱鍏鋒湁public , private 鍜?protected鐨勮闂潈闄愩?br />public class Test { public static void main(String[] args) { Family my = new Family(“Jonh",130); my.getMsg(); } }class Family { Family(String name,int weight){ this .f = new Father(name,weight); } private class Father { private int weight; private String name; Father(String n,int w) { this .name = n; this .weight = w; } public int getWeight() { return weight; } public String getName() { return name; } } private Father f; public void getMsg() { System.out.println("Name: "+f.getName()+"\nWeight: "+f.getWeight()); } }
綾籉amily 涓湁涓涓狥ather綾伙紝澹版槑涓簆rivate錛岃〃鏄庡湪Family綾諱腑鍙互鍒涘緩涓涓疄渚嬪璞★紝榪欎釜Father涓撳睘浜嶧amily綾匯傛櫘閫氱殑錛堥潪鍐呴儴錛夌被涓嶈兘澹版槑涓簆rivate鎴栬卲rotected錛屽彧鑳藉0鏄庝負public銆傚洜姝よ繖鏍風殑浠g爜鏄笉琚厑璁哥殑錛?br />
Family.Father a = my.new Father("Jonh",150);
濡傛灉瑕佷嬌鐢ㄤ笂榪頒唬鐮侊紝鍙淇敼鍐呴儴綾葷殑璁塊棶鏉冮檺灝卞彲浠ヤ簡錛屽鍘繪帀private鏉冮檺錛屽垯榛樿涓哄寘璁塊棶鏉冮檺錛屽悓涓涓寘涓殑綾婚兘鍙互璁塊棶瀹冿紝鑰屼笉鏄彧鑳戒粠Family綾繪墠鑳借闂?br />
public class test { public static void main(String[] args) { Family my = new Family("Jonh",130); my.getMsg(); Family.Father a = my.new Father("Jonh",150); System.out.println("Name: "+a.getName()+"\nWeight: "+a.getWeight()); } }
鍦ㄤ笂榪頒唬鐮佷腑錛屽湪鍒涘緩鍐呴儴綾誨璞℃椂錛岃娉曚負錛欶amily.Father a = my.new Father("Jonh",150); 璇存槑鍐呴儴綾誨璞$殑鍒涘緩鏄熀浜庝竴涓閮ㄧ被瀵硅薄錛坢y錛夛紝涔熷氨鏄鍐呴儴綾誨璞″繀欏諱緷闄勪簬涓涓閮ㄧ被瀵硅薄銆?/div>
鍐呴儴綾誨彲浠ュ嚭鐜板湪鎵灞炵被鐨勬柟娉曞唴鎴栦換鎰忎綔鐢ㄥ煙鍐呫傚儚涓嬮潰鐨勪唬鐮佸皢鍐呴儴綾誨祵鍏ュ湪鏂規硶鍐咃細
public class test { public static void main(String[] args) { Family my = new Family(); my.getMsg("Jonh",150); } }class Family { Family(){ } public void getMsg(String s,int n) { class Father { private int weight; private String name; Father(String n,int w) { this .name = n; this .weight = w; } public int getWeight() { return weight; } public String getName() { return name; } } Father f = new Father(s,n); System.out.println("Name: "+f.getName()+"\nWeight: "+f.getWeight()); } }
闂寘 鍐呴儴綾誨彲浠ヨ闂閮ㄧ被鐨勬垚鍛樺彉閲忥紙鍗充嬌鏄痯rivate錛夛紝濡傚湪Family綾諱腑娣誨姞鎴愬憳鍙橀噺height錛屽湪Father綾諱腑瀹氫箟涓涓柟娉?getHeight()錛屽垯鑳芥垚鍔熻闂繖涓猦eight鍙橀噺錛岃屽湪澶栭儴綾諱腑涓嶈兘璁塊棶鍐呴儴綾諱腑鐨勬垚鍛樺彉閲忋?br />
class Family
{
private int height = 180;
/* 瀹氫箟澶栭儴綾誨睘鎬eight */ Family(String name,
int weight){
this .f =
new Father(name,weight); }
private class Father
{
private int weight;
private String name;
Father(String n,
int w)
{
this .name = n;
this .weight = w;
}
public int getWeight()
{
return weight;
}
public String getName()
{
return name;
}
public int getHeight()
{
return height;
/* 璁塊棶澶栭儴綾葷殑灞炴eight */ }
}
private Father f;
public void getMsg()
{
System.out.println("Name: "+f.getName()+"\nWeight: "+f.getWeight()+"\nHeight: "+f.getHeight());
}
}
public class test
{
public static void main(String[] args)
{
Family my =
new Family("Jonh",130);
my.getMsg();
/* not allowed */ /* System.out.println(my.weight); */
}
}
濡傛灉鎶婂唴閮ㄧ被鍗曠嫭鎷垮埌澶栭潰鏉ュ0鏄庯紝閭d箞瑕佷嬌鐢ㄥ閮ㄧ被鐨勫睘鎬уheight錛屽氨瑕佸厛鍒涘緩澶栭儴綾葷殑瀵硅薄錛屽啀鐢卞璞¤皟鐢ㄥ叾height灞炴э紝鐜板湪鐢變簬鍐呴儴綾誨浜庡閮ㄧ被涓紝鎵浠ュ湪紼嬪簭璋冪敤鏃朵笉蹇呭啀鍒涘緩澶栭儴綾葷殑瀵硅薄錛岀洿鎺ュ氨鍙互浣跨敤height錛岃繖鏍峰噺灝戜簡涓閮ㄥ垎鍐呭瓨絀洪棿鐨勫紑閿銆?br />
宓屽static綾?/strong> 鍦ㄧ被鍐呴儴瀹氫箟static綾伙紝縐頒負宓屽static綾匯?br />鎴戜滑鍙互鐩存帴鍒涘緩宓屽綾伙紝鑰屼笉蹇呬緷璧栦簬鏌愪釜澶栭儴綾誨璞°傚祵濂楃被鏃犳硶璋冪敤澶栭儴瀵硅薄鐨勬柟娉曘佷篃鏃犳硶璇誨彇鎴栦慨鏀瑰閮ㄥ璞$殑鏁版嵁銆?br />濡傦細public class Test{ public static void main(String[] args){ Father.Son John = new Father.Son(); John.display(); } }class Father{ /* 宓屽綾?/span>*/ static class Son{ public void display(){ System.out.println("I am his son."); } } }
鎬葷粨 1. 鍐呴儴綾諱赴瀵屼簡綾葷殑緇勭粐褰㈠紡錛?br />2. 鍐呴儴綾誨疄鐜頒簡闂寘銆?br /> ]]>Java瀵硅薄寮曠敤錛堣漿錛?/title> http://www.shnenglu.com/zhenglinbo/archive/2013/09/27/203450.htmlhoshelly hoshelly Fri, 27 Sep 2013 00:39:00 GMT http://www.shnenglu.com/zhenglinbo/archive/2013/09/27/203450.html http://www.shnenglu.com/zhenglinbo/comments/203450.html http://www.shnenglu.com/zhenglinbo/archive/2013/09/27/203450.html#Feedback 0 http://www.shnenglu.com/zhenglinbo/comments/commentRss/203450.html http://www.shnenglu.com/zhenglinbo/services/trackbacks/203450.html 浣滆咃細Vamei 鍑哄錛歨ttp://www.cnblogs.com/vamei 嬈㈣繋杞澆錛屼篃璇蜂繚鐣欒繖孌靛0鏄庛傝阿璋紒
鎴戜滑涔嬪墠涓鐩村湪浣跨敤“瀵硅薄”榪欎釜姒傚康錛屼絾娌℃湁鎺㈣瀵硅薄鍦ㄥ唴瀛樹腑鐨勫叿浣撳瓨鍌ㄦ柟寮忋傝繖鏂歸潰鐨勮璁哄皢寮曞嚭“瀵硅薄寮曠敤”(object reference)榪欎竴閲嶈姒傚康銆?nbsp;
瀵硅薄寮曠敤
鎴戜滑娌跨敤涔嬪墠瀹氫箟鐨凥uman綾伙紝騫舵湁涓涓猅est綾?
澶嶅埗浠g爜
public class Test
{
public static void main(String[] args)
{
Human aPerson = new Human(160);
}
}
class Human
{
/**
* constructor
*/
public Human(int h)
{
this.height = h;
}
/**
* accessor
*/
public int getHeight()
{
return this.height;
}
/**
* mutator
*/
public void growHeight(int h)
{
this.height = this.height + h;
}
private int height;
}
澶嶅埗浠g爜
澶栭儴鍙互璋冪敤綾繪潵鍒涘緩瀵硅薄錛屾瘮濡備笂闈㈠湪Test綾諱腑:
Human aPerson = new Human(160);
鍒涘緩浜嗕竴涓狧uman綾葷殑瀵硅薄aPerson銆?nbsp;
涓婇潰鏄竴涓潪甯哥畝鍗曠殑琛ㄨ堪錛屼絾鎴戜滑鏈夎澶氱粏鑺傞渶瑕佹繁鍏?
棣栧厛鐪嬬瓑鍙風殑鍙充晶銆俷ew鏄湪鍐呭瓨涓負瀵硅薄寮杈熺┖闂淬傚叿浣撴潵璇達紝new鏄湪鍐呭瓨鐨勫爢(heap)涓婁負瀵硅薄寮杈熺┖闂淬傝繖涓絀洪棿涓紝淇濆瓨鏈夊璞$殑鏁版嵁鍜屾柟娉曘?/span>
鍐嶇湅絳夊彿鐨勫乏渚с俛Person鎸囦唬涓涓狧uman瀵硅薄錛岃縐頒負瀵硅薄寮曠敤(reference)銆傚疄闄呬笂錛宎Person騫朵笉鏄璞℃湰韜紝鑰屾槸綾諱技浜庝竴涓寚鍚戝璞$殑鎸囬拡銆俛Person瀛樺湪浜庡唴瀛樼殑鏍?stack)涓?/span>
褰撴垜浠敤絳夊彿璧嬪兼椂錛屾槸灝嗗彸渚ew鍦ㄥ爢涓垱寤哄璞$殑鍦板潃璧嬩簣緇欏璞″紩鐢ㄣ?/span>
榪欓噷鐨勫唴瀛橈紝鎸囩殑鏄疛VM (Java Virtual Machine)铏氭嫙鍑烘潵鐨凧ava榪涚▼鍐呭瓨絀洪棿銆傚唴瀛樼殑鍫嗗拰鏍堟蹇靛彲鍙傝僉inux浠庣▼搴忓埌榪涚▼銆?/span>
瀵硅薄寮曠敤
鏍堢殑璇誨彇閫熷害姣斿爢蹇紝浣嗘爤涓婂瓨鍌ㄧ殑鏁版嵁鍙楀埌鏈夋晥鑼冨洿鐨勯檺鍒躲傚湪C璇█涓紝褰撲竴嬈″嚱鏁拌皟鐢ㄧ粨鏉熸椂錛岀浉搴旂殑鏍堝撫(stack frame)瑕佸垹闄わ紝鏍堝撫涓婂瓨鍌ㄧ殑鍙傞噺鍜岃嚜鍔ㄥ彉閲忓氨娑堝け浜嗐侸ava鐨勬爤涔熷彈鍒板悓鏍風殑闄愬埗錛屽綋涓嬈℃柟娉曡皟鐢ㄧ粨鏉燂紝璇ユ柟娉曞瓨鍌ㄥ湪鏍堜笂鐨勬暟鎹皢娓呯┖銆傚湪 Java涓紝鎵鏈夌殑(鏅?瀵硅薄閮藉偍瀛樺湪鍫嗕笂銆傚洜姝わ紝new鍏抽敭瀛楃殑瀹屾暣鍚箟鏄紝鍦ㄥ爢涓婂垱寤哄璞°?/span>
鍩烘湰綾誨瀷(primitive type)鐨勫璞★紝姣斿int, double錛屼繚瀛樺湪鏍堜笂銆傚綋鎴戜滑澹版槑鍩烘湰綾誨瀷鏃訛紝涓嶉渶瑕乶ew銆備竴鏃﹀0鏄庯紝Java灝嗗湪鏍堜笂鐩存帴瀛樺偍鍩烘湰綾誨瀷鐨勬暟鎹傛墍浠ワ紝鍩烘湰綾誨瀷鐨勫彉閲忓悕琛ㄧず鐨勬槸鏁版嵁鏈韓錛屼笉鏄紩鐢ㄣ?/span>
寮曠敤鍜屽璞$殑鍏崇郴灝卞儚椋庣瓭鍜屼漢銆傛垜浠湅澶╃┖鏃?紼嬪簭閲屽啓鐨?錛岀湅鍒扮殑鏄絳?寮曠敤)錛屼絾椋庣瓭涓嬮潰瀵瑰簲鐨勶紝鏄漢(瀵硅薄):
寮曠敤鍜屽璞″垎紱伙紱寮曠敤鎸囧悜瀵硅薄
灝界寮曠敤鍜屽璞℃槸鍒嗙鐨勶紝浣嗘垜浠墍鏈夐氬線瀵硅薄鐨勮闂繀欏葷粡榪囧紩鐢ㄨ繖涓?#8220;澶ч棬”錛屾瘮濡備互 寮曠敤.鏂規硶() 鐨勬柟寮忚闂璞$殑鏂規硶銆傚湪Java涓紝鎴戜滑涓嶈兘璺寵繃寮曠敤鍘葷洿鎺ユ帴瑙﹀璞°傚啀姣斿錛屽璞鐨勬暟鎹垚鍛樺鏋滄槸涓涓櫘閫氬璞錛宎鐨勬暟鎹垚鍛樹繚瀛樼殑鏄寚鍚戝璞鐨勫紩鐢?(濡傛灉鏄熀鏈被鍨嬪彉閲忥紝閭d箞a鐨勬暟鎹垚鍛樹繚瀛樼殑鏄熀鏈被鍨嬪彉閲忔湰韜簡)銆?/span>
鍦↗ava涓紝寮曠敤璧峰埌浜嗘寚閽堢殑浣滅敤錛屼絾鎴戜滑涓嶈兘鐩存帴淇敼鎸囬拡鐨勫鹼紝姣斿鍍廋璇█閭f牱灝嗘寚閽堝煎姞1銆傛垜浠彧鑳介氳繃寮曠敤鎵ц瀵瑰璞$殑鎿嶄綔銆傝繖鏍風殑璁捐閬垮厤浜嗚澶氭寚閽堝彲鑳藉紩璧風殑閿欒銆?/span>
寮曠敤鐨勮祴鍊?/span>
褰撴垜浠皢涓涓紩鐢ㄨ祴鍊肩粰鍙︿竴涓紩鐢ㄦ椂錛屾垜浠疄闄呬笂澶嶅埗鐨勬槸瀵硅薄鐨勫湴鍧銆備袱涓紩鐢ㄥ皢鎸囧悜鍚屼竴瀵硅薄銆傛瘮濡?dummyPerson=aPerson;錛屽皢瀵艱嚧:
涓涓璞″彲浠ユ湁澶氫釜寮曠敤 (涓涓漢鍙互鏀懼涓絳?銆傚綋紼嬪簭閫氳繃鏌愪釜寮曠敤淇敼瀵硅薄鏃訛紝閫氳繃鍏朵粬寮曠敤涔熷彲浠ョ湅鍒拌淇敼銆傛垜浠彲浠ョ敤浠ヤ笅Test綾繪潵嫻嬭瘯瀹為檯鏁堟灉:
澶嶅埗浠g爜
public class Test
{
public static void main(String[] args)
{
Human aPerson = new Human(160);
Human dummyPerson = aPerson;
System.out.println(dummyPerson.getHeight());
aPerson.growHeight(20);
System.out.println(dummyPerson.getHeight());
}
}
澶嶅埗浠g爜
鎴戜滑瀵筧Person鐨勪慨鏀瑰皢褰卞搷鍒癲ummyPerson銆傝繖涓や釜寮曠敤瀹為檯涓婃寚鍚戝悓涓瀵硅薄銆?/span>
鎵浠ワ紝灝嗕竴涓紩鐢ㄨ祴鍊肩粰鍙︿竴涓紩鐢紝騫朵笉鑳藉鍒跺璞℃湰韜傛垜浠繀欏誨姹傚叾浠栫殑鏈哄埗鏉ュ鍒跺璞°?/span>
鍨冨溇鍥炴敹
闅忕潃鏂規硶璋冪敤鐨勭粨鏉燂紝寮曠敤鍜屽熀鏈被鍨嬪彉閲忎細琚竻絀恒傜敱浜庡璞″瓨媧諱簬鍫嗭紝鎵浠ュ璞℃墍鍗犳嵁鐨勫唴瀛樹笉浼氶殢鐫鏂規硶璋冪敤鐨勭粨鏉熻屾竻絀恒傝繘紼嬬┖闂村彲鑳藉緢蹇涓嶆柇鍒涘緩鐨勫璞″崰婊°侸ava鍐呭緩鏈夊瀮鍦懼洖鏀?garbage collection)鏈哄埗錛岀敤浜庢竻絀轟笉鍐嶄嬌鐢ㄧ殑瀵硅薄錛屼互鍥炴敹鍐呭瓨絀洪棿銆?/span>
鍨冨溇鍥炴敹鐨勫熀鏈師鍒欐槸錛屽綋瀛樺湪寮曠敤鎸囧悜鏌愪釜瀵硅薄鏃訛紝閭d箞璇ュ璞′笉浼氳鍥炴敹; 褰撴病鏈変換浣曞紩鐢ㄦ寚鍚戞煇涓璞℃椂錛岃瀵硅薄琚竻絀恒傚畠鎵鍗犳嵁鐨勭┖闂磋鍥炴敹銆?/span>
涓婂浘鍋囪浜嗘煇涓椂鍒籎VM涓殑鍐呭瓨鐘舵併侶uman Object鏈変笁涓紩鐢? 鏉ヨ嚜鏍堢殑aPerson鍜宒ummyPerson錛屼互鍙婂彟涓涓璞$殑鏁版嵁鎴愬憳president銆傝孋lub Object娌℃湁寮曠敤銆傚鏋滆繖涓椂鍊欏瀮鍦懼洖鏀跺惎鍔紝閭d箞Club Object灝嗚娓呯┖錛岃孒uman Object鏉ヨ嚜Club Object鐨勫紩鐢?president)涔熼殢涔嬭鍒犻櫎銆?/span>
鍨冨溇鍥炴敹鏄疛ava涓噸瑕佺殑鏈哄埗錛屽畠鐩存帴褰卞搷浜咼ava鐨勮繍琛屾晥鐜囥傛垜灝嗗湪浠ュ悗娣卞叆鍏剁粏鑺傘?/span>
鍙傛暟浼犻?br />
褰撴垜浠垎紱諱簡寮曠敤鍜屽璞$殑姒傚康鍚庯紝Java鏂規硶鐨勫弬鏁頒紶閫掓満鍒跺疄闄呬笂闈炲父娓呮櫚: Java鐨勫弬鏁頒紶閫掍負鍊間紶閫掋備篃灝辨槸璇達紝褰撴垜浠紶閫掍竴涓弬鏁版椂錛屾柟娉曞皢鑾峰緱璇ュ弬鏁扮殑涓涓嫹璐濄?/span>
瀹為檯涓婏紝鎴戜滑浼犻掔殑鍙傛暟錛屼竴涓槸鍩烘湰綾誨瀷鐨勫彉閲忥紝鍙︿竴涓負瀵硅薄鐨勫紩鐢ㄣ?/span>
鍩烘湰綾誨瀷鍙橀噺鐨勫間紶閫掞紝鎰忓懗鐫鍙橀噺鏈韓琚鍒訛紝騫朵紶閫掔粰Java鏂規硶銆侸ava鏂規硶瀵瑰彉閲忕殑淇敼涓嶄細褰卞搷鍒板師鍙橀噺銆?/span>
寮曠敤鐨勫間紶閫掞紝鎰忓懗鐫瀵硅薄鐨勫湴鍧琚鍒訛紝騫朵紶閫掔粰Java鏂規硶銆侸ava鏂規硶鏍規嵁璇ュ紩鐢ㄧ殑璁塊棶灝嗕細褰卞搷瀵硅薄銆?/span>
鍦ㄨ繖閲屾湁鍙︿竴涓煎緱涓鎻愮殑鎯呭喌: 鎴戜滑鍦ㄦ柟娉曞唴閮ㄤ嬌鐢╪ew鍒涘緩瀵硅薄錛屽茍灝嗚瀵硅薄鐨勫紩鐢ㄨ繑鍥炪傚鏋滆榪斿洖琚竴涓紩鐢ㄦ帴鏀訛紝鐢變簬瀵硅薄鐨勫紩鐢ㄤ笉涓?錛屽璞′緷鐒跺瓨鍦紝涓嶄細琚瀮鍦懼洖鏀躲?/span>
鎬葷粨
new
寮曠敤錛屽璞?/span>
琚瀮鍦懼洖鏀剁殑鏉′歡
鍙傛暟: 鍊間紶閫?/span>
]]>