ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
µÚÈýµç×ÓÊé ·µ»Ø±¾ÊéĿ¼ ¼ÓÈëÊéÇ© ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ¡ºÊղص½ÎÒµÄä¯ÀÀÆ÷¡»

Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ142²¿·Ö

¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡


¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡604¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡606¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

¡¡¡¡

ÆäÖУ¬TrashSorter¡¡ÐèÒªµ÷ÓÃÿ¸ö¡¡grab£¨£©·½·¨£»È»ºó¸ù¾Ýµ±Ç°Vector¡¡ÈÝÄɵÄÊÇʲôÀàÐÍ£¬»á»ñµÃÒ»¸ö²»Í¬µÄ¡¡

½á¹û¡£Ò²¾ÍÊÇ˵£¬Vector¡¡±ØÐëÁôÒâ×Ô¼ºÈÝÄɵÄÀàÐÍ¡£½â¾öÕâ¸öÎÊÌâµÄ´«Í³·½·¨ÊÇ´´½¨Ò»¸ö»ù´¡¡°Trash¡¡¡¡

bin¡±£¨À¬»øͲ£©À࣬²¢ÎªÏ£ÍûÈÝÄɵÄÿ¸ö²»Í¬µÄÀàÐͶ¼¼Ì³ÐÒ»¸öеÄÑÜÉúÀà¡£ÈôJava¡¡ÓÐÒ»¸ö²ÎÊý»¯µÄÀàÐÍ¡¡

»úÖÆ£¬ÄǾÍÒ²ÐíÊÇ×îÖ±½ÓµÄ·½·¨¡£µ«¶ÔÓÚÕâÖÖ»úÖÆÓ¦¸ÃΪÎÒÃǹ¹½¨µÄ¸÷¸öÀ࣬ÎÒÃDz»Ó¦¸Ã½øÐÐÂé·³µÄÊÖ¹¤±à¡¡

Â룬ÒÔºóµÄ¡°¹Û²ì¡±·½Ê½ÌṩÁËÒ»ÖÖ¸üºÃµÄ±àÂ뷽ʽ¡£¡¡¡¡

OOP¡¡Éè¼ÆÒ»Ìõ»ù±¾µÄ×¼ÔòÊÇ¡°Îª×´Ì¬µÄ±ä»¯Ê¹ÓÃÊý¾Ý³ÉÔ±£¬ÎªÐÐΪµÄ±ä»¯Ê¹ÓöàÐÔÐΡ±¡£¶ÔÓÚÈÝÄÉPaper¡¡£¨Ö½¡¡

ÕÅ£©µÄVector£¬ÒÔ¼°ÈÝÄÉ¡¡Glass¡¡£¨²£Á§£©µÄVector£¬´ó¼Ò×ʼ»òÐí»áÈÏΪ·Ö±ðÓÃÓÚËüÃǵġ¡grab£¨£©·½·¨¿Ï¶¨¡¡

»á²úÉú²»Í¬µÄÐÐΪ¡£µ«¾ßÌåÈçºÎÈ´ÍêÈ«È¡¾öÓÚÀàÐÍ£¬¶ø²»ÊÇÆäËûʲô¶«Î÷¡£¿É½«Æä½âÊͳÉÒ»ÖÖ²»Í¬µÄ״̬£¬¡¡

¶øÇÒÓÉÓÚJava¡¡ÓÐÒ»¸öÀà¿É±íʾÀàÐÍ£¨Class£©£¬ËùÒÔ¿ÉÓÃËüÅжÏÌض¨µÄTbin¡¡ÒªÈÝÄÉʲôÀàÐ͵ġ¡Trash¡£¡¡¡¡

ÓÃÓÚTbin¡¡µÄ¹¹½¨Æ÷ÒªÇóÎÒÃÇΪÆä´«µÝ×Ô¼ºÑ¡ÔñµÄÒ»¸öClass¡£ÕâÑù×ö¿É¸æËßVector¡¡ËüÏ£ÍûÈÝÄɵÄÊÇʲôÀà¡¡

ÐÍ¡£Ëæºó£¬grab£¨£©·½·¨Óá¡Class¡¡BinType¡¡ºÍ¡¡RTTI¡¡À´¼ì²éÎÒÃÇ´«µÝ¸øËüµÄ¡¡Trash¡¡¶ÔÏóÊÇ·ñÓëËüÏ£ÍûÊÕ¼¯µÄÀàÐÍ¡¡

Ïà·û¡£¡¡¡¡

ÏÂÃæÁгöÍêÕûµÄ½â¾ö·½°¸¡£É趨ΪעÊ͵ıàºÅ£¨Èç*1*£©±ãÓÚ´ó¼Ò¶ÔÕÕ³ÌÐòºóÃæÁгöµÄ˵Ã÷¡£¡¡¡¡

¡¡¡¡

//£º¡¡RecycleB¡£java¡¡¡¡

//¡¡Adding¡¡more¡¡objects¡¡to¡¡the¡¡recycling¡¡problem¡¡¡¡

package¡¡c16¡£recycleb£»¡¡¡¡

import¡¡c16¡£trash¡£*£»¡¡¡¡

import¡¡java¡£util¡£*£»¡¡¡¡

¡¡¡¡

//¡¡A¡¡vector¡¡that¡¡admits¡¡only¡¡the¡¡right¡¡type£º¡¡¡¡

class¡¡Tbin¡¡extends¡¡Vector¡¡£û¡¡¡¡

¡¡¡¡Class¡¡binType£»¡¡¡¡

¡¡¡¡Tbin£¨Class¡¡binType£©¡¡£û¡¡¡¡¡¡

¡¡¡¡¡¡¡¡this¡£binType¡¡=¡¡binType£»¡¡¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡boolean¡¡grab£¨Trash¡¡t£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡paring¡¡class¡¡types£º¡¡¡¡

¡¡¡¡¡¡¡¡if£¨t¡£getClass£¨£©¡£equals£¨binType£©£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡addElement£¨t£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡return¡¡true£»¡¡//¡¡Object¡¡grabbed¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡//¡¡Object¡¡not¡¡grabbed¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡TbinList¡¡extends¡¡Vector¡¡£û¡¡//£¨*1*£©¡¡¡¡

¡¡¡¡boolean¡¡sort£¨Trash¡¡t£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡Enumeration¡¡e¡¡=¡¡elements£¨£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡605¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡607¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡while£¨e¡£hasMoreElements£¨£©£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡Tbin¡¡bin¡¡=¡¡£¨Tbin£©e¡£nextElement£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡if£¨bin¡£grab£¨t£©£©¡¡return¡¡true£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡//¡¡bin¡¡not¡¡found¡¡for¡¡t¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡void¡¡sortBin£¨Tbin¡¡bin£©¡¡£û¡¡//¡¡£¨*2*£©¡¡¡¡

¡¡¡¡¡¡¡¡Enumeration¡¡e¡¡=¡¡bin¡£elements£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡while£¨e¡£hasMoreElements£¨£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡if£¨£¡sort£¨£¨Trash£©e¡£nextElement£¨£©£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Bin¡¡not¡¡found¡¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡RecycleB¡¡£û¡¡¡¡

¡¡¡¡static¡¡Tbin¡¡bin¡¡=¡¡new¡¡Tbin¡¡£¨Trash¡£class£©£»¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Fill¡¡up¡¡the¡¡Trash¡¡bin£º¡¡¡¡

¡¡¡¡¡¡¡¡ParseTrash¡£fillBin£¨¡¨Trash¡£dat¡¨£»¡¡bin£©£»¡¡¡¡

¡¡¡¡

¡¡¡¡¡¡¡¡TbinList¡¡trashBins¡¡=¡¡new¡¡TbinList£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡trashBins¡£addElement£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Tbin£¨Aluminum¡£class£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡trashBins¡£addElement£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Tbin£¨Paper¡£class£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡trashBins¡£addElement£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Tbin£¨Glass¡£class£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡add¡¡one¡¡line¡¡here£º¡¡£¨*3*£©¡¡¡¡

¡¡¡¡¡¡¡¡trashBins¡£addElement£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Tbin£¨Cardboard¡£class£©£©£»¡¡¡¡

¡¡¡¡

¡¡¡¡¡¡¡¡trashBins¡£sortBin£¨bin£©£»¡¡//¡¡£¨*4*£©¡¡¡¡

¡¡¡¡

¡¡¡¡¡¡¡¡Enumeration¡¡e¡¡=¡¡trashBins¡£elements£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡while£¨e¡£hasMoreElements£¨£©£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡Tbin¡¡b¡¡=¡¡£¨Tbin£©e¡£nextElement£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡Trash¡£sumValue£¨b£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡Trash¡£sumValue£¨bin£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

£¨1£©¡¡TbinListÈÝÄÉһϵÁС¡Tbin¡¡¾ä±ú£¬ËùÒÔÔÚ²éÕÒÓëÎÒÃÇ´«µÝ¸øËüµÄTrash¡¡¶ÔÏóÏà·ûµÄÇé¿öʱ£¬sort£¨£©ÄÜͨ¡¡

¹ýTbin¡¡¼Ì³Ð¡£¡¡¡¡

£¨2£©¡¡sortBin£¨£©ÔÊÐíÎÒÃǽ«Ò»¸öÍêÕûµÄ¡¡Tbin¡¡´«µÝ½øÈ¥£¬¶øÇÒËü»áÔÚ¡¡Tbin¡¡Àï±éÀú£¬ÌôÑ¡³öÿÖÖTrash£¬²¢½«Æä¡¡

¹éÀൽÌض¨µÄTbin¡¡ÖС£Çë×¢ÒâÕâЩ´úÂëµÄͨÓÃÐÔ£ºÐÂÀàÐͼÓÈëʱ£¬Ëü±¾Éí²»ÐèÒªÈκθĶ¯¡£Ö»ÒªÐÂÀàÐͼÓÈë¡¡

¡¡£¨»ò·¢ÉúÆäËûʼþ£©Ê±´óÁ¿´úÂ붼²»ÐèÒª±ä»¯£¬¾Í±íÃ÷ÎÒÃÇÉè¼ÆµÄÊÇÒ»¸öÈÝÒ×À©Õ¹µÄϵͳ¡£¡¡¡¡

£¨3£©¡¡ÏÖÔÚ¿ÉÒÔÌå»áÌí¼ÓÐÂÀàÐÍÓжàôÈÝÒ×ÁË¡£ÎªÖ§³ÖÌí¼Ó£¬Ö»ÐèÒª¸Ä¶¯¼¸ÐдúÂë¡£ÈçȷʵÓбØÒª£¬ÉõÖÁ¿ÉÒÔ¡¡

½øÒ»²½µØ¸Ä½øÉè¼Æ£¬Ê¹¸ü¶àµÄ´úÂ붼±£³Ö¡°¹Ì¶¨¡±¡£¡¡¡¡

£¨4£©¡¡Ò»¸ö·½·¨µ÷ÓÃʹbin¡¡µÄÄÚÈݹéÀൽ¶ÔÓ¦µÄ¡¢Ìض¨ÀàÐ͵ÄÀ¬»øͲÀï¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡606¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡608¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

16¡£6¡¡¶àÖØÅÉDz¡¡¡¡



ÉÏÊöÉè¼Æ·½°¸¿Ï¶¨ÊÇÁîÈËÂúÒâµÄ¡£ÏµÍ³ÄÚÐÂÀàÐ͵ļÓÈëÉæ¼°Ìí¼Ó»òÐ޸IJ»Í¬µÄÀ࣬µ«Ã»ÓбØÒªÔÚϵͳÄÚ¶Ô´ú¡¡

Âë×÷´ó·¶Î§µÄ¸Ä¶¯¡£³ý´ËÒÔÍ⣬RTTI¡¡²¢²»ÏóËüÔÚ¡¡RecycleA¡£java¡¡ÀïÄÇÑù±»²»µ±µØʹÓá£È»¶ø£¬ÎÒÃÇÈÔÈ»Óпɡ¡

ÄܸüÉîÈëÒ»²½£¬ÒÔ×î¡°´¿¡±µÄ½Ç¶ÈÀ´¿´´ýRTTI£¬¿¼ÂÇÈçºÎÔÚÀ¬»ø·ÖÀàϵͳÖн«ËüÍêÈ«ÏûÃ𡣡¡¡¡

Ϊ´ïµ½Õâ¸öÄ¿±ê£¬Ê×ÏȱØÐëÈÏʶµ½£º¶ÔËùÓÐÓ벻ͬÀàÐÍÓÐÌØÊâ¹ØÁªµÄ»î¶¯À´Ëµ¡ª¡ª±ÈÈçÕì²âÒ»ÖÖÀ¬»øµÄ¾ßÌå¡¡

ÀàÐÍ£¬²¢°ÑËüÖÃÈëÊʵ±µÄÀ¬»øͲÀ¡ªÕâЩ»î¶¯¶¼Ó¦µ±Í¨¹ý¶àÐÎÐÔÒÔ¼°¶¯Ì¬°ó¶¨¼ÓÒÔ¿ØÖÆ¡£¡¡¡¡

ÒÔÇ°µÄÀý×Ó¶¼ÊÇÏÈ°´ÀàÐÍÅÅÐò£¬ÔÙ¶ÔÊôÓÚijÖÖÌØÊâÀàÐ͵ÄһϵÁÐÔªËؽøÐвÙ×÷¡£ÏÖÔÚÒ»µ©ÐèÒª²Ù×÷Ìض¨µÄÀà¡¡

ÐÍ£¬¾ÍÇëÏÈÍ£ÏÂÀ´ÏëÒ»Ïë¡£ÊÂʵÉÏ£¬¶àÐÎÐÔ£¨¶¯Ì¬°ó¶¨µÄ·½·¨µ÷Óã©Õû¸öµÄ×ÚÖ¼¾ÍÊÇ°ïÎÒÃǹÜÀíÓ벻ͬÀàÐÍ¡¡

ÓÐÌØÊâ¹ØÁªµÄÐÅÏ¢¡£¼ÈÈ»Èç´Ë£¬ÎªÊ²Ã´»¹Òª×Ô¼ºÈ¥¼ì²éÀàÐÍÄØ£¿¡¡¡¡

´ð°¸ÔÚÓÚ´ó¼Ò»òÐí²»ÒÔΪȻµÄÒ»¸öµÀÀí£ºJava¡¡Ö»Ö´Ðе¥Ò»ÅÉDz¡£Ò²¾ÍÊÇ˵£¬¼ÙÈç¶Ô¶à¸öÀàÐÍδ֪µÄ¶ÔÏóÖ´ÐС¡

ijÏî²Ù×÷£¬Java¡¡Ö»»áΪÄÇЩÀàÐÍÖеÄÒ»ÖÖµ÷Óö¯Ì¬°ó¶¨»úÖÆ¡£Õ⵱Ȼ²»Äܽâ¾öÎÊÌ⣬ËùÒÔ×îºó²»µÃ²»È˹¤ÅС¡

¶ÏijЩÀàÐÍ£¬²ÅÄÜÓÐЧµØ²úÉú×Ô¼ºµÄ¶¯Ì¬°ó¶¨ÐÐΪ¡£¡¡¡¡

Ϊ½â¾öÕâ¸öȱÏÝ£¬ÎÒÃÇÐèÒªÓõ½¡°¶àÖØÅÉDz¡±»úÖÆ£¬ÕâÒâζ×ÅÐèÒª½¨Á¢Ò»¸öÅäÖã¬Ê¹µ¥Ò»·½·¨µ÷ÓÃÄܲúÉú¶à¡¡

¸ö¶¯Ì¬·½·¨µ÷Ó㬴ӶøÔÚÒ»´Î´¦Àí¹ý³ÌÖÐÕýÈ·Åжϳö¶àÖÖÀàÐÍ¡£Îª´ïµ½Õâ¸öÒªÇó£¬ÐèÒª¶Ô¶à¸öÀàÐͽṹ½øÐС¡

²Ù×÷£ºÃ¿Ò»´ÎÅÉDz¶¼ÐèÒªÒ»¸öÀàÐͽṹ¡£ÏÂÃæµÄÀý×Ó½«¶ÔÁ½¸ö½á¹¹½øÐвÙ×÷£ºÏÖÓеġ¡Trash¡¡ÏµÁÐÒÔ¼°ÓÉÀ¬»ø¡¡

Ͳ£¨Trash¡¡Bin£©µÄÀàÐ͹¹³ÉµÄÒ»¸öϵÁСª¡ª²»Í¬µÄÀ¬»ø»ò·ÏÆ·½«ÖÃÈëÕâЩͲÄÚ¡£µÚ¶þ¸ö·Ö¼¶½á¹¹²¢·Ç¾ø¶ÔÏÔ¡¡

È»µÄ¡£ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃÇÐèÒªÈËΪµØ´´½¨Ëü£¬ÒÔÖ´ÐжàÖØÅÉDz£¨ÓÉÓÚ±¾ÀýÖ»Éæ¼°Á½´ÎÅÉDz£¬ËùÒÔ³ÆΪ¡°Ë«¡¡

ÖØÅÉDz¡±£©¡£¡¡¡¡



16¡£6¡£1¡¡ÊµÏÖË«ÖØÅÉDz¡¡¡¡



¼Çס¶àÐÎÐÔÖ»ÄÜͨ¹ý·½·¨µ÷ÓòÅÄܱíÏÖ³öÀ´£¬ËùÒÔ¼ÙÈçÏëʹ˫ÖØÅÉDzÕýÈ·½øÐУ¬±ØÐëÖ´ÐÐÁ½¸ö·½·¨µ÷ÓãºÔÚ¡¡

ÿÖֽṹÖж¼ÓÃÒ»¸öÀ´ÅжÏÆäÖеÄÀàÐÍ¡£ÔÚTrash¡¡½á¹¹ÖУ¬½«Ê¹ÓÃÒ»¸öеķ½·¨µ÷Óá¡addToBin£¨£©£¬Ëü²ÉÓõġ¡

²ÎÊýÊÇÓÉTypeBin¡¡¹¹³ÉµÄÒ»¸öÊý×é¡£ÄǸö·½·¨½«ÔÚÊý×éÖбéÀú£¬³¢ÊÔ½«×Ô¼º¼ÓÈëÊʵ±µÄÀ¬»øͲ£¬ÕâÀïÕýÊÇË«¡¡

ÖØÅÉDz·¢ÉúµÄµØ·½¡£¡¡¡¡

¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

¡¡¡¡

н¨Á¢µÄ·Ö¼¶½á¹¹ÊÇTypeBin£¬ÆäÖаüº¬ÁËËü×Ô¼ºµÄÒ»¸ö·½·¨£¬ÃûΪadd£¨£©£¬¶øÇÒÒ²Ó¦ÓÃÁ˶àÐÎÐÔ¡£µ«Òª×¢Òâ¡¡

Ò»¸öÐÂÌص㣺add£¨£©ÒѽøÐÐÁË¡°¹ýÔØ¡±´¦Àí£¬¿É½ÓÊܲ»Í¬µÄÀ¬»øÀàÐÍ×÷Ϊ²ÎÊý¡£Òò´Ë£¬Ë«ÖØÂú×ã»úÖƵÄÒ»¸ö¹Ø¡¡

¼üµãÊÇËüÒ²ÒªÉæ¼°µ½¹ýÔØ¡£¡¡¡¡

³ÌÐòµÄÖØÐÂÉè¼ÆÒ²´øÀ´ÁËÒ»¸öÎÊÌ⣺ÏÖÔڵĻù´¡Àà¡¡Trash¡¡±ØÐë°üº¬Ò»¸öaddToBin£¨£©·½·¨¡£Îª½â¾öÕâ¸öÎÊÌ⣬¡¡

Ò»¸ö×îÖ±½ÓµÄ°ì·¨ÊǸ´ÖÆËùÓдúÂ룬²¢Ð޸Ļù´¡ÀࡣȻ¶ø£¬¼ÙÈçûÓжÔÔ´ÂëµÄ¿ØÖÆȨ£¬ÄÇô»¹ÓÐÁíÒ»¸ö°ì·¨¡¡

¿ÉÒÔ¿¼ÂÇ£º½«addToBin£¨£©·½·¨ÖÃÈëÒ»¸ö½Ó¿ÚÄÚ²¿£¬±£³Ö¡¡Trash¡¡²»±ä£¬²¢¼Ì³Ðеġ¢ÌØÊâµÄÀàÐÍAluminum¡¡£¬¡¡

Paper£¬Glass¡¡ÒÔ¼°Cardboard¡£ÎÒÃÇÔÚÕâÀï×¼±¸²ÉÈ¡ºóÒ»¸ö°ì·¨¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡607¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡609¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

Õâ¸öÉè¼Æ·½°¸ÖÐÓõ½µÄ´ó¶àÊýÀ඼±ØÐëÉèΪpublic¡¡£¨¹«Óã©ÊôÐÔ£¬ËùÒÔËüÃÇ·ÅÖÃÓÚ×Ô¼ºµÄÀàÄÚ¡£ÏÂÃæÁгö½Ó¡¡

¿Ú´úÂ룺¡¡¡¡

¡¡¡¡

//£º¡¡TypedBinMember¡£java¡¡¡¡

//¡¡An¡¡interface¡¡for¡¡adding¡¡the¡¡double¡¡dispatching¡¡¡¡

//¡¡method¡¡to¡¡the¡¡trash¡¡hierarchy¡¡without¡¡¡¡¡¡

//¡¡modifying¡¡the¡¡original¡¡hierarchy¡£¡¡¡¡

package¡¡c16¡£doubledispatch£»¡¡¡¡

¡¡¡¡

interface¡¡TypedBinMember¡¡£û¡¡¡¡

¡¡¡¡//¡¡The¡¡new¡¡method£º¡¡¡¡

¡¡¡¡boolean¡¡addToBin£¨TypedBin£§£§¡¡tb£©£»¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

ÔÚAluminum¡¡£¬Paper£¬Glass¡¡ÒÔ¼°Cardboard¡¡Ã¿¸öÌض¨µÄ×ÓÀàÐÍÄÚ£¬¶¼»áʵÏÖ½Ó¿Ú¡¡TypeBinMember¡¡µÄ¡¡

addToBin£¨£©·½·¨£¬µ«Ã¿ÖÖÇé¿öÏÂʹÓõĴúÂë¡°Ëƺõ¡±¶¼ÊÇÍêÈ«Ò»ÑùµÄ£º¡¡¡¡

¡¡¡¡

//£º¡¡DDAluminum¡£java¡¡¡¡

//¡¡Aluminum¡¡for¡¡double¡¡dispatching¡¡¡¡

package¡¡c16¡£doubledispatch£»¡¡¡¡

import¡¡c16¡£trash¡£*£»¡¡¡¡

¡¡¡¡

public¡¡class¡¡DDAluminum¡¡extends¡¡Aluminum¡¡¡¡¡¡

¡¡¡¡¡¡¡¡implements¡¡TypedBinMember¡¡£û¡¡¡¡

¡¡¡¡public¡¡DDAluminum£¨double¡¡wt£©¡¡£û¡¡super£¨wt£©£»¡¡£ý¡¡¡¡

¡¡¡¡public¡¡boolean¡¡addToBin£¨TypedBin£§£§¡¡tb£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡tb¡£length£»¡¡i£«£«£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡if£¨tb£§i£§¡£add£¨this£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡return¡¡true£»¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

//£º¡¡DDPaper¡£java¡¡¡¡

//¡¡Paper¡¡for¡¡double¡¡dispatching¡¡¡¡

package¡¡c16¡£doubledispatch£»¡¡¡¡

import¡¡c16¡£trash¡£*£»¡¡¡¡

¡¡¡¡

public¡¡class¡¡DDPaper¡¡extends¡¡Paper¡¡¡¡¡¡

¡¡¡¡¡¡¡¡implements¡¡TypedBinMember¡¡£û¡¡¡¡

¡¡¡¡public¡¡DDPaper£¨double¡¡wt£©¡¡£û¡¡super£¨wt£©£»¡¡£ý¡¡¡¡

¡¡¡¡public¡¡boolean¡¡addToBin£¨TypedBin£§£§¡¡tb£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡tb¡£length£»¡¡i£«£«£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡if£¨tb£§i£§¡£add£¨this£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡return¡¡true£»¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

//£º¡¡DDGlass¡£java¡¡¡¡

//¡¡Glass¡¡for¡¡double¡¡dispatching¡¡¡¡

package¡¡c16¡£doubledispatch£»¡¡¡¡

import¡¡c16¡£trash¡£*£»¡¡¡¡

¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡608¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡610¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

public¡¡class¡¡DDGlass¡¡extends¡¡Glass¡¡¡¡¡¡

¡¡¡¡¡¡¡¡implements¡¡TypedBinMember¡¡£û¡¡¡¡

¡¡¡¡public¡¡DDGlass£¨double¡¡wt£©¡¡£û¡¡super£¨wt£©£»¡¡£ý¡¡¡¡

¡¡¡¡public¡¡boolean¡¡addToBin£¨TypedBin£§£§¡¡tb£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡tb¡£length£»¡¡i£«£«£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡if£¨tb£§i£§¡£add£¨this£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡return¡¡true£»¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

//£º¡¡DDCardboard¡£java¡¡¡¡

//¡¡Cardboard¡¡for¡¡double¡¡dispatching¡¡¡¡

package¡¡c16¡£doubledispatch£»¡¡¡¡

import¡¡c16¡£trash¡£*£»¡¡¡¡

¡¡¡¡

public¡¡class¡¡DDCardboard¡¡extends¡¡Cardboard¡¡¡¡¡¡

¡¡¡¡¡¡¡¡implements¡¡TypedBinMember¡¡£û¡¡¡¡

¡¡¡¡public¡¡DDCardboard£¨double¡¡wt£©¡¡£û¡¡super£¨wt£©£»¡¡£ý¡¡¡¡

¡¡¡¡public¡¡boolean¡¡addToBin£¨TypedBin£§£§¡¡tb£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡tb¡£length£»¡¡i£«£«£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡if£¨tb£§i£§¡£add£¨this£©£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡return¡¡true£»¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

ÿ¸öaddToBin£¨£©ÄڵĴúÂë»áΪÊý×éÖеÄÿ¸öTypeBin¡¡¶ÔÏóµ÷ÓÃadd£¨£©¡£µ«Çë×¢Òâ²ÎÊý£ºthis¡£¶ÔTrash¡¡µÄÿ¡¡

¸ö×ÓÀàÀ´Ëµ£¬this¡¡µÄÀàÐͶ¼ÊDz»Í¬µÄ£¬ËùÒÔ²»ÄÜÈÏΪ´úÂë¡°ÍêÈ«¡±Ò»Ñù¡ª¡ª¾¡¹ÜÒÔºóÔÚ¡¡Java¡¡Àï¼ÓÈë²ÎÊý»¯¡¡

ÀàÐÍ»úÖƺó±ã¿ÉÈÏΪһÑù¡£ÕâÊÇË«ÖØÅÉDzµÄµÚÒ»¸ö²¿·Ö£¬ÒòΪһµ©½øÈëÕâ¸ö·½·¨ÄÚ²¿£¬±ã¿ÉÖªµÀµ½µ×ÊÇ¡¡

Aluminum¡¡£¬Paper£¬»¹ÊÇÆäËûʲôÀ¬»øÀàÐÍ¡£ÔÚ¶Ôadd£¨£©µÄµ÷Óùý³ÌÖУ¬ÕâÖÖÐÅÏ¢ÊÇͨ¹ýthis¡¡µÄÀàÐÍ´«µÝ¡¡

µÄ¡£±àÒëÆ÷»á·ÖÎö³ö¶Ô¡¡add£¨£©ÕýÈ·µÄ¹ýÔØ°æ±¾µÄµ÷Óᣵ«ÓÉÓÚtb£§i£§»á²úÉúÖ¸Ïò»ù´¡ÀàÐÍ¡¡TypeBin¡¡µÄÒ»¸ö¾ä¡¡

±ú£¬ËùÒÔ×îÖÕ»áµ÷ÓÃÒ»¸ö²»Í¬µÄ·½·¨¡ª¡ª¾ßÌåʲô·½·¨È¡¾öÓÚµ±Ç°Ñ¡ÔñµÄ¡¡TypeBin¡¡µÄÀàÐÍ¡£ÄǾÍÊǵڶþ´ÎÅÉ¡¡

Dz¡£¡¡¡¡

ÏÂÃæÊÇTypeBin¡¡µÄ»ù´¡Àࣺ¡¡¡¡

¡¡¡¡

//£º¡¡TypedBin¡£java¡¡¡¡

//¡¡Vector¡¡that¡¡knows¡¡how¡¡to¡¡grab¡¡the¡¡right¡¡type¡¡¡¡

package¡¡c16¡£doubledispatch£»¡¡¡¡

import¡¡c16¡£trash¡£*£»¡¡¡¡

import¡¡java¡£util¡£*£»¡¡¡¡

¡¡¡¡

public¡¡abstract¡¡class¡¡TypedBin¡¡£û¡¡¡¡

¡¡¡¡Vector¡¡v¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡

¡¡¡¡protected¡¡boolean¡¡addIt£¨Trash¡¡t£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡v¡£addElement£¨t£©£»¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡true£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡Enumeration¡¡elements£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡v¡£elements£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡boolean¡¡add£¨DDAluminum¡¡a£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡609¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡611¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡boolean¡¡add£¨DDPaper¡¡a£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡boolean¡¡add£¨DDGlass¡¡a£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡boolean¡¡add£¨DDCardboard¡¡a£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡false£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

¿ÉÒÔ¿´µ½£¬¹ýÔصġ¡add£¨£©·½·¨È«¶¼»á·µ»Øfalse¡£Èç¹ûδÔÚÑÜÉúÀàÀï¶Ô·½·¨½øÐйýÔØ£¬Ëü¾Í»áÒ»Ö±·µ»Ø¡¡

false£¬¶øÇÒµ÷ÓÃÕߣ¨Ä¿Ç°ÊÇ¡¡addToBin£¨£©£©»áÈÏΪµ±Ç°Trash¡¡¶ÔÏóÉÐδ³É¹¦¼ÓÈëÒ»¸ö¼¯ºÏ£¬ËùÒÔ»á¼ÌÐø²éÕÒ¡¡

ÕýÈ·µÄ¼¯ºÏ¡£¡¡¡¡

ÔÚTypeBin¡¡µÄÿһ¸ö×ÓÀàÖУ¬¶¼Ö»ÓÐÒ»¸ö¹ýÔصķ½·¨»á±»¹ýÔØ¡ª¡ª¾
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨1£© ²È£¨1£©
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡