ÌáÆðJavaÄÚ²¿ÀࣨInner Class£©¿ÉÄܺܶàÈ˲»Ì«ÊìϤ£¬Êµ¼ÊÉÏÀàËƵĸÅÄîÔÚC++ÀïÒ²ÓУ¬ÄǾÍÊÇǶÌ×ÀࣨNested Class£©£¬¹ØÓÚÕâÁ½ÕßµÄÇø±ðÓëÁªÏµ£¬ÔÚÏÂÎÄÖлáÓжԱȡ£ÄÚ²¿Àà´Ó±íÃæÉÏ¿´£¬¾ÍÊÇÔÚÀàÖÐÓÖ¶¨ÒåÁËÒ»¸öÀࣨÏÂÎĻῴµ½£¬ÄÚ²¿Àà¿ÉÒÔÔںܶàµØ·½¶¨Ò壩£¬¶øʵ¼ÊÉϲ¢Ã»ÓÐÄÇô¼òµ¥£¬Õ§¿´ÉÏÈ¥ÄÚ²¿ÀàËƺõÓÐЩ¶àÓ࣬ËüµÄÓô¦¶ÔÓÚ³õѧÕßÀ´Ëµ¿ÉÄܲ¢²»ÊÇÄÇôÏÔÖø£¬µ«ÊÇËæ×ŶÔËüµÄÉîÈëÁ˽⣬Äã»á·¢ÏÖJavaµÄÉè¼ÆÕßÔÚÄÚ²¿ÀàÉíÉϵÄÈ·ÊÇÓÃÐÄÁ¼¿à¡£Ñ§»áʹÓÃÄÚ²¿À࣬ÊÇÕÆÎÕJava¸ß¼¶±à³ÌµÄÒ»²¿·Ö£¬Ëü¿ÉÒÔÈÃÄã¸üÓÅÑŵØÉè¼ÆÄãµÄ³ÌÐò½á¹¹¡£ÏÂÃæ´ÓÒÔϼ¸¸ö·½ÃæÀ´½éÉÜ£º
¡¡¡¡µÚÒ»´Î¼ûÃæ
public interface Contents {
¡¡int value();
}
public interface Destination {
¡¡String readLabel();
}
public class Goods {
¡¡private class Content implements Contents {
¡¡¡¡private int i = 11;
¡¡¡¡public int value() {
¡¡¡¡¡¡return i;
¡¡¡¡}
¡¡}
¡¡protected class GDestination implements Destination {
¡¡¡¡private String label;
¡¡¡¡private GDestination(String whereTo) {
¡¡¡¡¡¡label = whereTo;
¡¡¡¡}
¡¡¡¡public String readLabel() {
¡¡¡¡¡¡return label;
¡¡¡¡}
¡¡}
¡¡public Destination dest(String s) {
¡¡¡¡return new GDestination(s);
¡¡}
¡¡public Contents cont() {
¡¡¡¡return new Content();
¡¡}
}
class TestGoods {
¡¡public static void main(String[] args) {
¡¡¡¡Goods p = new Goods();
¡¡¡¡Contents c = p.cont();
¡¡¡¡Destination d = p.dest("Beijing");
¡¡}
}
¡¡¡¡ÔÚÕâ¸öÀý×ÓÀïÀàContentºÍGDestination±»¶¨ÒåÔÚÁËÀàGoodsÄÚ²¿£¬²¢ÇÒ·Ö±ðÓÐ×ÅprotectedºÍprivateÐÞÊηûÀ´¿ØÖÆ·ÃÎʼ¶±ð¡£Content´ú±í×ÅGoodsµÄÄÚÈÝ£¬¶øGDestination´ú±í×ÅGoodsµÄÄ¿µÄµØ¡£ËüÃÇ·Ö±ðʵÏÖÁËÁ½¸ö½Ó¿ÚContentºÍDestination¡£ÔÚºóÃæµÄmain·½·¨Àֱ½ÓÓà Contents cºÍDestination d½øÐвÙ×÷£¬ÄãÉõÖÁÁ¬ÕâÁ½¸öÄÚ²¿ÀàµÄÃû×Ö¶¼Ã»Óп´¼û£¡ÕâÑù£¬ÄÚ²¿ÀàµÄµÚÒ»¸öºÃ´¦¾ÍÌåÏÖ³öÀ´ÁË??Òþ²ØÄã²»ÏëÈñðÈËÖªµÀµÄ²Ù×÷£¬Ò²¼´·â×°ÐÔ¡£
¡¡¡¡Í¬Ê±£¬ÎÒÃÇÒ²·¢ÏÖÁËÔÚÍⲿÀà×÷Ó÷¶Î§Ö®ÍâµÃµ½ÄÚ²¿Àà¶ÔÏóµÄµÚÒ»¸ö·½·¨£¬ÄǾÍÊÇÀûÓÃÆäÍⲿÀàµÄ·½·¨´´½¨²¢·µ»Ø¡£ÉÏÀýÖеÄcont()ºÍdest()·½·¨¾ÍÊÇÕâô×öµÄ¡£ÄÇô»¹ÓÐûÓбðµÄ·½·¨ÄØ£¿µ±È»ÓУ¬ÆäÓï·¨¸ñʽÈçÏ£º
outerObject=new outerClass(Constructor Parameters);
outerClass.innerClass innerObject=outerObject.new InnerClass(Constructor Parameters);
¡¡¡¡×¢ÒâÔÚ´´½¨·Ç¾²Ì¬ÄÚ²¿Àà¶ÔÏóʱ£¬Ò»¶¨ÒªÏÈ´´½¨ÆðÏàÓ¦µÄÍⲿÀà¶ÔÏó¡£ÖÁÓÚÔÒò£¬Ò²¾ÍÒý³öÁËÎÒÃÇÏÂÒ»¸ö»°Ìâ??·Ç¾²Ì¬ÄÚ²¿Àà¶ÔÏóÓÐ×ÅÖ¸ÏòÆäÍⲿÀà¶ÔÏóµÄÒýÓ㬶ԸղŵÄÀý×ÓÉÔ×÷Ð޸ģº
public class Goods {
¡¡private valueRate=2;
¡¡private class Content implements Contents {
¡¡¡¡private int i = 11*valueRate;
¡¡¡¡public int value() {
¡¡¡¡¡¡return i;
¡¡¡¡}
¡¡}
¡¡protected class GDestination implements Destination {
¡¡¡¡private String label;
¡¡¡¡private GDestination(String whereTo) {
¡¡¡¡¡¡label = whereTo;
¡¡¡¡}
¡¡¡¡public String readLabel() {
¡¡¡¡¡¡return label;
¡¡¡¡}
¡¡}
¡¡public Destination dest(String s) {
¡¡¡¡return new GDestination(s);
¡¡}
¡¡public Contents cont() {
¡¡¡¡return new Content();
¡¡}
}
¡¡¡¡Ð޸ĵIJ¿·ÖÓÃÀ¶É«ÏÔʾÁË¡£ÔÚÕâÀïÎÒÃǸøGoodsÀàÔö¼ÓÁËÒ»¸öprivate³ÉÔ±±äÁ¿valueRate£¬ÒâÒåÊÇ»õÎïµÄ¼ÛֵϵÊý£¬ÔÚÄÚ²¿ÀàContentµÄ·½·¨value()¼ÆËã¼Ûֵʱ°ÑËü³ËÉÏ¡£ÎÒÃÇ·¢ÏÖ£¬value()¿ÉÒÔ·ÃÎÊvalueRate£¬ÕâÒ²ÊÇÄÚ²¿ÀàµÄµÚ¶þ¸öºÃ´¦??Ò»¸öÄÚ²¿Àà¶ÔÏó¿ÉÒÔ·ÃÎÊ´´½¨ËüµÄÍⲿÀà¶ÔÏóµÄÄÚÈÝ£¬ÉõÖÁ°üÀ¨Ë½ÓбäÁ¿£¡ÕâÊÇÒ»¸ö·Ç³£ÓÐÓõÄÌØÐÔ£¬ÎªÎÒÃÇÔÚÉè¼ÆʱÌṩÁ˸ü¶àµÄ˼·ºÍ½Ý¾¶¡£ÒªÏëʵÏÖÕâ¸ö¹¦ÄÜ£¬ÄÚ²¿Àà¶ÔÏó¾Í±ØÐëÓÐÖ¸ÏòÍⲿÀà¶ÔÏóµÄÒýÓá£Java±àÒëÆ÷ÔÚ´´½¨ÄÚ²¿Àà¶ÔÏóʱ£¬ÒþʽµÄ°ÑÆäÍⲿÀà¶ÔÏóµÄÒýÓÃÒ²´«Á˽øÈ¥²¢Ò»Ö±±£´æ×Å¡£ÕâÑù¾ÍʹµÃÄÚ²¿Àà¶ÔÏóʼÖÕ¿ÉÒÔ·ÃÎÊÆäÍⲿÀà¶ÔÏó£¬Í¬Ê±ÕâÒ²ÊÇΪʲôÔÚÍⲿÀà×÷Ó÷¶Î§Ö®ÍâÏòÒª´´½¨ÄÚ²¿Àà¶ÔÏó±ØÐëÏÈ´´½¨ÆäÍⲿÀà¶ÔÏóµÄÔÒò¡£
¡¡¡¡ÓÐÈË»áÎÊ£¬Èç¹ûÄÚ²¿ÀàÀïµÄÒ»¸ö³ÉÔ±±äÁ¿ÓëÍⲿÀàµÄÒ»¸ö³ÉÔ±±äÁ¿Í¬Ãû£¬Ò²¼´ÍⲿÀàµÄͬÃû³ÉÔ±±äÁ¿±»ÆÁ±ÎÁË£¬Ôõô°ì£¿Ã»Ê£¬JavaÀïÓÃÈçϸñʽ±í´ïÍⲿÀàµÄÒýÓãº
outerClass.this
¡¡¡¡ÓÐÁËËü£¬ÎÒÃǾͲ»ÅÂÕâÖÖÆÁ±ÎµÄÇé¿öÁË¡£
¡¡¡¡¾²Ì¬ÄÚ²¿Àà
¡¡¡¡ºÍÆÕͨµÄÀàÒ»Ñù£¬ÄÚ²¿ÀàÒ²¿ÉÒÔÓо²Ì¬µÄ¡£²»¹ýºÍ·Ç¾²Ì¬ÄÚ²¿ÀàÏà±È£¬Çø±ð¾ÍÔÚÓÚ¾²Ì¬ÄÚ²¿ÀàûÓÐÁËÖ¸ÏòÍⲿµÄÒýÓá£Õâʵ¼ÊÉϺÍC++ÖеÄǶÌ×ÀàºÜÏàÏñÁË£¬JavaÄÚ²¿ÀàÓëC++ǶÌ×Àà×î´óµÄ²»Í¬¾ÍÔÚÓÚÊÇ·ñÓÐÖ¸ÏòÍⲿµÄÒýÓÃÕâÒ»µãÉÏ£¬µ±È»´ÓÉè¼ÆµÄ½Ç¶ÈÒÔ¼°ÒÔËüһЩϸ½ÚÀ´½²»¹ÓÐÇø±ð¡£
¡¡¡¡³ý´ËÖ®Í⣬ÔÚÈκηǾ²Ì¬ÄÚ²¿ÀàÖУ¬¶¼²»ÄÜÓо²Ì¬Êý¾Ý£¬¾²Ì¬·½·¨»òÕßÓÖÒ»¸ö¾²Ì¬ÄÚ²¿ÀࣨÄÚ²¿ÀàµÄǶÌ׿ÉÒÔ²»Ö¹Ò»²ã£©¡£²»¹ý¾²Ì¬ÄÚ²¿ÀàÖÐÈ´¿ÉÒÔÓµÓÐÕâÒ»ÇС£ÕâÒ²ËãÊÇÁ½Õߵĵڶþ¸öÇø±ð°É¡£
¡¡¡¡¾Ö²¿ÄÚ²¿Àà
¡¡¡¡Êǵģ¬JavaÄÚ²¿ÀàÒ²¿ÉÒÔÊǾֲ¿µÄ£¬Ëü¿ÉÒÔ¶¨ÒåÔÚÒ»¸ö·½·¨ÉõÖÁÒ»¸ö´úÂë¿éÖ®ÄÚ¡£
public class Goods1 {
¡¡public Destination dest(String s) {
¡¡¡¡class GDestination implements Destination {
¡¡¡¡¡¡private String label;
¡¡¡¡¡¡private GDestination(String whereTo) {
¡¡¡¡¡¡¡¡label = whereTo;
¡¡¡¡¡¡}
¡¡¡¡¡¡public String readLabel() { return label; }
¡¡¡¡}
¡¡¡¡return new GDestination(s);
¡¡}
¡¡public static void main(String[] args) {
¡¡¡¡Goods1 g= new Goods1();
¡¡¡¡Destination d = g.dest("Beijing");
¡¡}
}
¡¡¡¡ÉÏÃæ¾ÍÊÇÕâÑùÒ»¸öÀý×Ó¡£ÔÚ·½·¨destÖÐÎÒÃǶ¨ÒåÁËÒ»¸öÄÚ²¿À࣬×îºóÓÉÕâ¸ö·½·¨·µ»ØÕâ¸öÄÚ²¿ÀàµÄ¶ÔÏó¡£Èç¹ûÎÒÃÇÔÚÓÃÒ»¸öÄÚ²¿ÀàµÄʱºò½öÐèÒª´´½¨ËüµÄÒ»¸ö¶ÔÏó²¢´´¸øÍⲿ£¬¾Í¿ÉÒÔÕâÑù×ö¡£µ±È»£¬¶¨ÒåÔÚ·½·¨ÖеÄÄÚ²¿Àà¿ÉÒÔʹÉè¼Æ¶àÑù»¯£¬ÓÃ;¾ø²»½ö½öÔÚÕâÒ»µã¡£
ÏÂÃæÓÐÒ»¸ö¸ü¹ÖµÄÀý×Ó£º
public class Goods2{
¡¡private void internalTracking(boolean b) {
¡¡¡¡if(b) {
¡¡¡¡¡¡class TrackingSlip {
¡¡¡¡¡¡¡¡private String id;
¡¡¡¡¡¡¡¡TrackingSlip(String s) {
¡¡¡¡¡¡¡¡¡¡id = s;
¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡String getSlip() { return id; }
¡¡¡¡¡¡}
¡¡¡¡¡¡TrackingSlip ts = new TrackingSlip("slip");
¡¡¡¡¡¡String s = ts.getSlip();
¡¡¡¡}
¡¡}
¡¡public void track() { internalTracking(true); }
¡¡public static void main(String[] args) {
¡¡¡¡Goods2 g= new Goods2();
¡¡¡¡g.track();
¡¡}
}
¡¡¡¡Äã²»ÄÜÔÚifÖ®Íâ´´½¨Õâ¸öÄÚ²¿ÀàµÄ¶ÔÏó£¬ÒòΪÕâÒѾ³¬³öÁËËüµÄ×÷ÓÃÓò¡£²»¹ýÔÚ±àÒëµÄʱºò£¬ÄÚ²¿ÀàTrackingSlipºÍÆäËûÀàÒ»Ñùͬʱ±»±àÒ룬ֻ²»¹ýËüÓÉËü×Ô¼ºµÄ×÷ÓÃÓò£¬³¬³öÁËÕâ¸ö·¶Î§¾ÍÎÞЧ£¬³ý´ËÖ®ÍâËüºÍÆäËûÄÚ²¿ÀಢûÓÐÇø±ð¡£
¡¡¡¡ÄäÃûÄÚ²¿Àà
¡¡¡¡javaµÄÄäÃûÄÚ²¿ÀàµÄÓï·¨¹æÔò¿´ÉÏÈ¥ÓÐЩ¹Å¹Ö£¬²»¹ýÈçͬÄäÃûÊý×éÒ»Ñù£¬µ±ÄãÖ»ÐèÒª´´½¨Ò»¸öÀàµÄ¶ÔÏó¶øÇÒÓò»ÉÏËüµÄÃû×Öʱ£¬Ê¹ÓÃÄÚ²¿Àà¿ÉÒÔʹ´úÂë¿´ÉÏÈ¥¼ò½àÇå³þ¡£ËüµÄÓï·¨¹æÔòÊÇÕâÑùµÄ£º
new interfacename(){......}; »ò new superclassname(){......};
¡¡¡¡ÏÂÃæ½Ó×ÅÇ°Ãæ¼ÌÐø¾ÙÀý×Ó£º
public class Goods3 {
¡¡public Contents cont(){
¡¡¡¡return new Contents(){
¡¡¡¡¡¡private int i = 11;
¡¡¡¡¡¡public int value() {
¡¡¡¡¡¡¡¡return i;
¡¡¡¡¡¡}
¡¡¡¡};
¡¡}
}
¡¡¡¡ÕâÀï·½·¨cont()ʹÓÃÄäÃûÄÚ²¿ÀàÖ±½Ó·µ»ØÁËÒ»¸öʵÏÖÁ˽ӿÚContentsµÄÀàµÄ¶ÔÏ󣬿´ÉÏÈ¥µÄÈ·Ê®·Ö¼ò½à¡£
¡¡¡¡ÔÚjavaµÄʼþ´¦ÀíµÄÄäÃûÊÊÅäÆ÷ÖУ¬ÄäÃûÄÚ²¿Àà±»´óÁ¿µÄʹÓá£ÀýÈçÔÚÏë¹Ø±Õ´°¿Úʱ¼ÓÉÏÕâÑùÒ»¾ä´úÂ룺
frame.addWindowListener(new WindowAdapter(){
¡¡public void windowClosing(WindowEvent e){
¡¡¡¡System.exit(0);
¡¡}
});
¡¡¡¡ÓÐÒ»µãÐèҪעÒâµÄÊÇ£¬ÄäÃûÄÚ²¿ÀàÓÉÓÚûÓÐÃû×Ö£¬ËùÒÔËüûÓй¹Ô캯Êý£¨µ«ÊÇÈç¹ûÕâ¸öÄäÃûÄÚ²¿Àà¼Ì³ÐÁËÒ»¸öÖ»º¬Óдø²ÎÊý¹¹Ô캯ÊýµÄ¸¸À࣬´´½¨ËüµÄʱºò±ØÐë´øÉÏÕâЩ²ÎÊý£¬²¢ÔÚʵÏֵĹý³ÌÖÐʹÓÃsuper¹Ø¼ü×Öµ÷ÓÃÏàÓ¦µÄÄÚÈÝ£©¡£Èç¹ûÄãÏëÒª³õʼ»¯ËüµÄ³ÉÔ±±äÁ¿£¬ÓÐÏÂÃ漸ÖÖ·½·¨£º
¡¡¡¡Èç¹ûÊÇÔÚÒ»¸ö·½·¨µÄÄäÃûÄÚ²¿À࣬¿ÉÒÔÀûÓÃÕâ¸ö·½·¨´«½øÄãÏëÒªµÄ²ÎÊý£¬²»¹ý¼Çס£¬ÕâЩ²ÎÊý±ØÐë±»ÉùÃ÷Ϊfinal¡£
¡¡¡¡½«ÄäÃûÄÚ²¿Àà¸ÄÔì³ÉÓÐÃû×ֵľֲ¿ÄÚ²¿À࣬ÕâÑùËü¾Í¿ÉÒÔÓµÓй¹Ô캯ÊýÁË¡£
¡¡¡¡ÔÚÕâ¸öÄäÃûÄÚ²¿ÀàÖÐʹÓóõʼ»¯´úÂë¿é¡£
¡¡¡¡ÎªÊ²Ã´ÐèÒªÄÚ²¿Àࣿ
¡¡¡¡javaÄÚ²¿ÀàÓÐʲôºÃ´¦£¿ÎªÊ²Ã´ÐèÒªÄÚ²¿Àࣿ
¡¡¡¡Ê×ÏȾÙÒ»¸ö¼òµ¥µÄÀý×Ó£¬Èç¹ûÄãÏëʵÏÖÒ»¸ö½Ó¿Ú£¬µ«ÊÇÕâ¸ö½Ó¿ÚÖеÄÒ»¸ö·½·¨ºÍÄã¹¹ÏëµÄÕâ¸öÀàÖеÄÒ»¸ö·½·¨µÄÃû³Æ£¬²ÎÊýÏàͬ£¬ÄãÓ¦¸ÃÔõô°ì£¿Õâʱºò£¬Äã¿ÉÒÔ½¨Ò»¸öÄÚ²¿ÀàʵÏÖÕâ¸ö½Ó¿Ú¡£ÓÉÓÚÄÚ²¿Àà¶ÔÍⲿÀàµÄËùÓÐÄÚÈݶ¼ÊÇ¿É·ÃÎʵģ¬ËùÒÔÕâÑù×ö¿ÉÒÔÍê³ÉËùÓÐÄãÖ±½ÓʵÏÖÕâ¸ö½Ó¿ÚµÄ¹¦ÄÜ¡£
¡¡¡¡²»¹ýÄã¿ÉÄÜÒªÖÊÒÉ£¬¸ü¸ÄһϷ½·¨µÄ²»¾ÍÐÐÁËÂð£¿
¡¡¡¡µÄÈ·£¬ÒÔ´Ë×÷ΪÉè¼ÆÄÚ²¿ÀàµÄÀíÓÉ£¬ÊµÔÚûÓÐ˵·þÁ¦¡£
¡¡¡¡ÕæÕýµÄÔÒòÊÇÕâÑùµÄ£¬javaÖеÄÄÚ²¿ÀàºÍ½Ó¿Ú¼ÓÔÚÒ»Æ𣬿ÉÒԵĽâ¾ö³£±»C++³ÌÐòÔ±±§Ô¹javaÖдæÔÚµÄÒ»¸öÎÊÌâ??ûÓжà¼Ì³Ð¡£Êµ¼ÊÉÏ£¬C++µÄ¶à¼Ì³ÐÉè¼ÆÆðÀ´ºÜ¸´ÔÓ£¬¶øjavaͨ¹ýÄÚ²¿Àà¼ÓÉϽӿڣ¬¿ÉÒԺܺõÄʵÏÖ¶à¼Ì³ÐµÄЧ¹û¡£