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

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

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



×î³õ£¬Java¡¡Ö»ÊÇ×÷ΪһÖÖÓÃÓÚ¿ØÖÆÓ²¼þµÄÓïÑÔ¶øÉè¼Æ£¬ÓëÒòÌØÍø²¢Ã»ÓÐË¿ºÁÁªÏµ¡£ÏóÕâÑùÒ»ÀàÃæÏò´óÖÚµÄÓï¡¡

ÑÔÒ»Ñù£¬ÆäÒâÒåÔÚÓÚ³ÌÐòÔ±¿ÉÒÔ¶ÔÈÎÒâÒ»¸ö¶ÔÏó½øÐпË¡¡£ÕâÑùÒ»À´£¬clone£¨£©¾Í·ÅÖÃÔÚ¸ùÀàObject¡¡ÀïÃ棬¡¡

µ«ÒòΪËüÊÇÒ»ÖÖ¹«Ó÷½Ê½£¬Òò¶øÎÒÃÇͨ³£Äܹ»¶ÔÈÎÒâÒ»¸ö¶ÔÏó½øÐпË¡¡£¿´À´ÕâÊÇ×îÁé»îµÄ·½Ê½ÁË£¬±Ï¾¹Ëü¡¡

²»»á´øÀ´Èκκ¦´¦¡£¡¡¡¡

Õýµ±Java¡¡¿´ÆðÀ´ÏóÒ»ÖÖÖÕ¼¶ÒòÌØÍø³ÌÐòÉè¼ÆÓïÑÔµÄʱºò£¬Çé¿öÈ´·¢ÉúÁ˱仯¡£Í»È»µØ£¬ÈËÃÇÌá³öÁË°²È«ÎÊ¡¡

Ì⣬¶øÇÒÀíËùµ±È»£¬ÕâЩÎÊÌâÓëʹÓöÔÏóÓйأ¬ÎÒÃDz»Ô¸ÍûÈκÎÈË¿Ë¡×Ô¼ºµÄ±£ÃܶÔÏó¡£ËùÒÔÎÒÃÇ×îºó¿´µ½¡¡

µÄÊÇΪԭÀ´ÄǸö¼òµ¥¡¢Ö±¹ÛµÄ·½°¸Ìí¼ÓµÄ´óÁ¿²¹¶¡£ºclone£¨£©ÔÚObject¡¡Àï±»ÉèÖóɡ°protected¡±¡£±ØÐ뽫Æä¡¡

¸²¸Ç£¬²¢Ê¹Óá°implement¡¡Cloneable¡±£¬Í¬Ê±½â¾öÎ¥ÀýµÄÎÊÌâ¡£¡¡¡¡

Ö»ÓÐÔÚ×¼±¸µ÷ÓÃObject¡¡µÄ¡¡clone£¨£©·½·¨Ê±£¬²ÅûÓбØҪʹÓá¡Cloneable¡¡½Ó¿Ú£¬ÒòΪÄǸö·½·¨»áÔÚÔËÐÐÆÚ¼äµÃ¡¡

µ½¼ì²é£¬ÒÔÈ·±£ÎÒÃǵÄÀàʵÏÖÁËCloneable¡£µ«ÎªÁ˱£³ÖÁ¬¹áÐÔ£¨¶øÇÒÓÉÓÚCloneable¡¡ÎÞÂÛÈçºÎ¶¼ÊÇ¿Õ¡¡

µÄ£©£¬×îºÃ»¹ÊÇÓÉ×Ô¼ºÊµÏÖCloneable¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡362¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡364¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

12¡£3¡¡¿Ë¡µÄ¿ØÖÆ¡¡¡¡



ΪÏû³ý¿Ë¡ÄÜÁ¦£¬´ó¼ÒÒ²ÐíÈÏΪֻÐ轫clone£¨£©·½·¨¼òµ¥µØÉèΪprivate¡¡£¨Ë½ÓУ©¼´¿É£¬µ«ÕâÑùÊÇÐв»Í¨µÄ£¬¡¡

ÒòΪ²»ÄܲÉÓÃÒ»¸ö»ù´¡Àà·½·¨£¬²¢Ê¹ÆäÔÚÑÜÉúÀàÖиü¡°Ë½ÓС±¡£ËùÒÔÊÂÇ鲢ûÓÐÕâô¼òµ¥¡£´ËÍ⣬ÎÒÃÇÓбء¡

Òª¿ØÖÆÒ»¸ö¶ÔÏóÊÇ·ñÄܹ»¿Ë¡¡£¶ÔÓÚÎÒÃÇÉè¼ÆµÄÒ»¸öÀ࣬ʵ¼ÊÓÐÐí¶àÖÖ·½°¸¶¼ÊÇ¿ÉÒÔ²ÉÈ¡µÄ£º¡¡¡¡

£¨1£©¡¡±£³ÖÖÐÁ¢£¬²»Îª¿Ë¡×öÈκÎÊÂÇé¡£Ò²¾ÍÊÇ˵£¬¾¡¹Ü²»¿É¶ÔÎÒÃǵÄÀà¿Ë¡£¬µ«´ÓËü¼Ì³ÐµÄÒ»¸öÀàÈ´¿É¸ù¾Ý¡¡

ʵ¼ÊÇé¿ö¾ö¶¨¿Ë¡¡£Ö»ÓÐObject¡£clone£¨£©Òª¶ÔÀàÖеÄ×ֶνøÐÐijЩºÏÀíµÄ²Ù×÷ʱ£¬²Å¿ÉÒÔ×÷Õâ·½ÃæµÄ¾ö¶¨¡£¡¡¡¡

£¨2£©¡¡Ö§³Ö¡¡clone£¨£©£¬²ÉÓÃʵÏÖ¡¡Cloneable¡¡£¨¿É¿Ë¡£©ÄÜÁ¦µÄ±ê×¼²Ù×÷£¬²¢¸²¸Çclone£¨£©¡£ÔÚ±»¸²¸ÇµÄclone£¨£©¡¡

ÖУ¬¿Éµ÷Óá¡super¡£clone£¨£©£¬²¢²¶»ñËùÓÐÎ¥Àý£¨ÕâÑù¿Éʹclone£¨£©²»¡°ÖÀ¡±³öÈκÎÎ¥Àý£©¡£¡¡¡¡

£¨3£©¡¡ÓÐÌõ¼þµØÖ§³Ö¿Ë¡¡£ÈôÀàÈÝÄÉÁËÆäËû¶ÔÏóµÄ¾ä±ú£¬¶øÄÇЩ¶ÔÏóÒ²ÐíÄܹ»¿Ë¡£¨¼¯ºÏÀà±ãÊÇÕâÑùµÄÒ»¸öÀý¡¡

×Ó£©£¬¾Í¿ÉÊÔ×Å¿Ë¡ӵÓжԷ½¾ä±úµÄËùÓжÔÏó£»Èç¹ûËüÃÇ¡°ÖÀ¡±³öÁËÎ¥Àý£¬Ö»ÐèÈÃÕâЩΥÀýͨ¹ý¼´¿É¡£¾Ù¸ö¡¡

Àý×ÓÀ´Ëµ£¬¼ÙÉèÓÐÒ»¸öÌØÊâµÄ¡¡Vector£¬ËüÊÔͼ¿Ë¡×Ô¼ºÈÝÄɵÄËùÓжÔÏó¡£±àдÕâÑùµÄÒ»¸öVector¡¡Ê±£¬²¢²»¡¡

ÖªµÀ¿Í»§³ÌÐòÔ±»á°ÑʲôÐÎʽµÄ¶ÔÏóÖÃÈëÕâ¸ö¡¡Vector¡¡ÖУ¬ËùÒÔ²¢²»ÖªµÀËüÃÇÊÇ·ñÕæµÄÄܹ»¿Ë¡¡£¡¡¡¡

£¨4£©¡¡²»ÊµÏÖ¡¡Cloneable£¨£©£¬µ«Êǽ«clone£¨£©¸²¸Ç³É¡¡protected£¬Ê¹ÈκÎ×ֶζ¼¾ßÓÐÕýÈ·µÄ¸´ÖÆÐÐΪ¡£ÕâÑùÒ»¡¡

À´£¬´ÓÕâ¸öÀà¼Ì³ÐµÄËùÓж«Î÷¶¼Äܸ²¸Çclone£¨£©£¬²¢µ÷Óá¡super¡£clone£¨£©À´²úÉúÕýÈ·µÄ¸´ÖÆÐÐΪ¡£×¢ÒâÔÚÎÒÃÇ¡¡

ʵÏÖ·½°¸À¿ÉÒÔ¶øÇÒÓ¦¸Ãµ÷ÓÃsuper¡£clone£¨£©¡ª¡ª¼´Ê¹ÄǸö·½·¨±¾À´Ô¤ÆÚµÄÊÇÒ»¸öCloneable¡¡¶ÔÏ󣨷ñÔò¡¡

»áÖÀ³öÒ»¸öÎ¥Àý£©£¬ÒòΪûÓÐÈË»áÔÚÎÒÃÇÕâÖÖÀàÐ͵ĶÔÏóÉÏÖ±½Óµ÷ÓÃËü¡£ËüÖ»ÓÐͨ¹ýÒ»¸öÑÜÉúÀàµ÷Ó㻶ÔÄÇ¡¡

¸öÑÜÉúÀàÀ´Ëµ£¬Èç¹ûÒª±£Ö¤ËüÕý³£¹¤×÷£¬ÐèʵÏÖCloneable¡£¡¡¡¡

£¨5£©¡¡²»ÊµÏÖ¡¡Cloneable¡¡À´ÊÔ×Å·ÀÖ¹¿Ë¡£¬²¢¸²¸Çclone£¨£©£¬ÒÔ²úÉúÒ»¸öÎ¥Àý¡£ÎªÊ¹ÕâÒ»ÉèÏë˳ÀûʵÏÖ£¬Ö»ÓС¡

Áî´ÓËüÑÜÉú³öÀ´µÄÈκÎÀ඼µ÷ÓÃÖØж¨ÒåºóµÄ¡¡clone£¨£©ÀïµÄ¡¡suepr¡£clone£¨£©¡£¡¡¡¡

£¨6£©¡¡½«ÀàÉèΪfinal£¬´Ó¶ø·ÀÖ¹¿Ë¡¡£Èôclone£¨£©ÉÐδ±»ÎÒÃǵÄÈκÎÒ»¸öÉϼ¶Àา¸Ç£¬ÕâÒ»ÉèÏë±ã²»»á³É¹¦¡£¡¡

ÈôÒѱ»¸²¸Ç£¬ÄÇôÔÙÒ»´Î¸²¸ÇËü£¬²¢¡°ÖÀ¡±³öÒ»¸ö¡¡CloneNotSupportedException¡¡£¨¿Ë¡²»Ö§³Ö£©Î¥Àý¡£Îªµ£¡¡

±£¿Ë¡±»½ûÖ¹£¬½«ÀàÉèΪfinal¡¡ÊÇΨһµÄ°ì·¨¡£³ý´ËÒÔÍ⣬һµ©Éæ¼°±£ÃܶÔÏó»òÕßÓöµ½Ïë¶Ô´´½¨µÄ¶ÔÏóÊýÁ¿¡¡

½øÐпØÖƵÄÆäËûÇé¿ö£¬Ó¦¸Ã½«ËùÓй¹½¨Æ÷¶¼ÉèΪprivate£¬²¢Ìṩһ¸ö»ò¸ü¶àµÄÌØÊâ·½·¨À´´´½¨¶ÔÏó¡£²ÉÓá¡

ÕâÖÖ·½Ê½£¬ÕâЩ·½·¨¾Í¿ÉÒÔÏÞÖÆ´´½¨µÄ¶ÔÏóÊýÁ¿ÒÔ¼°ËüÃǵĴ´½¨Ìõ¼þ¡ª¡ªÒ»ÖÖÌØÊâÇé¿öÊǵڡ¡16¡¡ÕÂÒª½éÉܵġ¡

singleton¡¡£¨¶À×Ó£©·½°¸¡£¡¡¡¡

¡¡¡¡

ÏÂÃæÕâ¸öÀý×Ó×ܽáÁË¿Ë¡µÄ¸÷ÖÖʵÏÖ·½·¨£¬È»ºóÔÚ²ã´Î½á¹¹Öн«Æä¡°¹Ø±Õ¡±£º¡¡¡¡

¡¡¡¡

//£º¡¡CheckCloneable¡£java¡¡¡¡

//¡¡Checking¡¡to¡¡see¡¡if¡¡a¡¡handle¡¡can¡¡be¡¡cloned¡¡¡¡

¡¡¡¡

//¡¡Can't¡¡clone¡¡this¡¡because¡¡it¡¡doesn't¡¡¡¡

//¡¡override¡¡clone£¨£©£º¡¡¡¡

class¡¡Ordinary¡¡£û£ý¡¡¡¡

¡¡¡¡

//¡¡Overrides¡¡clone£»¡¡but¡¡doesn't¡¡implement¡¡¡¡

//¡¡Cloneable£º¡¡¡¡

class¡¡WrongClone¡¡extends¡¡Ordinary¡¡£û¡¡¡¡

¡¡¡¡public¡¡Object¡¡clone£¨£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡throws¡¡CloneNotSupportedException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡super¡£clone£¨£©£»¡¡//¡¡Throws¡¡exception¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

//¡¡Does¡¡all¡¡the¡¡right¡¡things¡¡for¡¡cloning£º¡¡¡¡

class¡¡IsCloneable¡¡extends¡¡Ordinary¡¡¡¡¡¡

¡¡¡¡¡¡¡¡implements¡¡Cloneable¡¡£û¡¡¡¡

¡¡¡¡public¡¡Object¡¡clone£¨£©¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡throws¡¡CloneNotSupportedException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡super¡£clone£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡363¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡365¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡

//¡¡Turn¡¡off¡¡cloning¡¡by¡¡throwing¡¡the¡¡exception£º¡¡¡¡

class¡¡NoMore¡¡extends¡¡IsCloneable¡¡£û¡¡¡¡

¡¡¡¡public¡¡Object¡¡clone£¨£©¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡throws¡¡CloneNotSupportedException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡throw¡¡new¡¡CloneNotSupportedException£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡TryMore¡¡extends¡¡NoMore¡¡£û¡¡¡¡

¡¡¡¡public¡¡Object¡¡clone£¨£©¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡throws¡¡CloneNotSupportedException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Calls¡¡NoMore¡£clone£¨£©£»¡¡throws¡¡exception£º¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡super¡£clone£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡BackOn¡¡extends¡¡NoMore¡¡£û¡¡¡¡

¡¡¡¡private¡¡BackOn¡¡duplicate£¨BackOn¡¡b£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Somehow¡¡make¡¡a¡¡copy¡¡of¡¡b¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡and¡¡return¡¡that¡¡copy¡£¡¡This¡¡is¡¡a¡¡dummy¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡copy£»¡¡just¡¡to¡¡make¡¡the¡¡point£º¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡new¡¡BackOn£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡Object¡¡clone£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Doesn't¡¡call¡¡NoMore¡£clone£¨£©£º¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡duplicate£¨this£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

//¡¡Can't¡¡inherit¡¡from¡¡this£»¡¡so¡¡can't¡¡override¡¡¡¡

//¡¡the¡¡clone¡¡method¡¡like¡¡in¡¡BackOn£º¡¡¡¡

final¡¡class¡¡ReallyNoMore¡¡extends¡¡NoMore¡¡£û£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡CheckCloneable¡¡£û¡¡¡¡

¡¡¡¡static¡¡Ordinary¡¡tryToClone£¨Ordinary¡¡ord£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡String¡¡id¡¡=¡¡ord¡£getClass£¨£©¡£getName£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Ordinary¡¡x¡¡=¡¡null£»¡¡¡¡

¡¡¡¡¡¡¡¡if£¨ord¡¡instanceof¡¡Cloneable£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Attempting¡¡¡¨¡¡£«¡¡id£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡x¡¡=¡¡£¨Ordinary£©£¨£¨IsCloneable£©ord£©¡£clone£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Cloned¡¡¡¨¡¡£«¡¡id£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡catch£¨CloneNotSupportedException¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Could¡¡not¡¡clone¡¡¡¨¡¡£«¡¡id£©£»¡¡¡¡

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

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

¡¡¡¡¡¡¡¡return¡¡x£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

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

¡¡¡¡¡¡¡¡//¡¡Upcasting£º¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡364¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡366¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡Ordinary£§£§¡¡ord¡¡=¡¡£û¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡IsCloneable£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡WrongClone£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡NoMore£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡TryMore£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡BackOn£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡ReallyNoMore£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý£»¡¡¡¡

¡¡¡¡¡¡¡¡Ordinary¡¡x¡¡=¡¡new¡¡Ordinary£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡This¡¡won't¡¡pile£»¡¡since¡¡clone£¨£©¡¡is¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡protected¡¡in¡¡Object£º¡¡¡¡

¡¡¡¡¡¡¡¡//£¡¡¡x¡¡=¡¡£¨Ordinary£©x¡£clone£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡tryToClone£¨£©¡¡checks¡¡first¡¡to¡¡see¡¡if¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡a¡¡class¡¡implements¡¡Cloneable£º¡¡¡¡

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

¡¡¡¡¡¡¡¡¡¡¡¡tryToClone£¨ord£§i£§£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

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

¡¡¡¡

µÚÒ»¸öÀàOrdinary¡¡´ú±í×Å´ó¼ÒÔÚ±¾Êé¸÷´¦×î³£¼ûµ½µÄÀࣺ²»Ö§³Ö¿Ë¡£¬µ«ÔÚËüÕýʽӦÓÃÒÔºó£¬È´Ò²²»½ûÖ¹¶Ô¡¡

Æä¿Ë¡¡£µ«¼ÙÈçÓÐÒ»¸öÖ¸ÏòOrdinary¡¡¶ÔÏóµÄ¾ä±ú£¬¶øÇÒÄǸö¶ÔÏó¿ÉÄÜÊÇ´ÓÒ»¸ö¸üÉîµÄÑÜÉúÀàÉÏËÝÔìÐÍÀ´µÄ£¬¡¡

±ã²»ÄÜÅжÏËüµ½µ×Äܲ»ÄÜ¿Ë¡¡£¡¡¡¡

WrongClone¡¡Àà½ÒʾÁËʵÏÖ¿Ë¡µÄÒ»ÖÖ²»Õýȷ;¾¶¡£Ëüȷʵ¸²¸ÇÁË¡¡Object¡£clone£¨£©£¬²¢½«ÄǸö·½·¨ÉèΪ¡¡

public£¬µ«È´Ã»ÓÐʵÏÖCloneable¡£ËùÒÔÒ»µ©·¢³ö¶Ôsuper¡£clone£¨£©µÄµ÷Óã¨ÓÉÓÚ¶ÔObject¡£clone£¨£©µÄÒ»¸ö¡¡

µ÷ÓÃÔì³ÉµÄ£©£¬±ã»áÎÞÇéµØÖÀ³öCloneNotSupportedException¡¡Î¥Àý¡£¡¡¡¡

ÔÚ¡¡IsCloneable¡¡ÖУ¬´ó¼Ò¿´µ½µÄ²ÅÊǽøÐпË¡µÄ¸÷ÖÖÕýÈ·Ðж¯£ºÏȸ²¸Çclone£¨£©£¬²¢ÊµÏÖÁË¡¡Cloneable¡£µ«¡¡

ÊÇ£¬Õâ¸öclone£¨£©·½·¨ÒÔ¼°±¾ÀýµÄÁíÍ⼸¸ö·½·¨²¢²»²¶»ñCloneNotSupportedException¡¡Î¥Àý£¬¶øÊÇÈÎÓÉËüͨ¡¡

¹ý£¬²¢´«µÝ¸øµ÷ÓÃÕß¡£Ëæºó£¬µ÷ÓÃÕß±ØÐëÓÃÒ»¸ötry¡­catch¡¡´úÂë¿é°ÑËü°üΧÆðÀ´¡£ÔÚÎÒÃÇ×Ô¼ºµÄclone£¨£©·½¡¡

·¨ÖУ¬Í¨³£ÐèÒªÔÚ¡¡clone£¨£©ÄÚ²¿²¶»ñCloneNotSupportedException¡¡Î¥Àý£¬¶ø²»ÊÇÈÎÓÉËüͨ¹ý¡£ÕýÈç´ó¼ÒÒÔºó¡¡

»áÀí½âµÄÄÇÑù£¬¶ÔÕâ¸öÀý×ÓÀ´Ëµ£¬ÈÃËüͨ¹ýÊÇ×îÕýÈ·µÄ×ö·¨¡£¡¡¡¡

ÀàNoMore¡¡ÊÔͼ°´ÕÕJava¡¡Éè¼ÆÕß´òËãµÄÄÇÑù¡°¹Ø±Õ¡±¿Ë¡£ºÔÚÑÜÉúÀàclone£¨£©ÖУ¬ÎÒÃÇÖÀ³ö¡¡

CloneNotSupportedException¡¡Î¥Àý¡£TryMore¡¡ÀàÖеÄclone£¨£©·½·¨ÕýÈ·µØµ÷Óá¡super¡£clone£¨£©¡¡£¬²¢½âÎö³É¡¡

NoMore¡£clone£¨£©£¬ºóÕßÖÀ³öÒ»¸öÎ¥Àý²¢½ûÖ¹¿Ë¡¡£¡¡¡¡

µ«ÔÚÒѱ»¸²¸ÇµÄclone£¨£©·½·¨ÖУ¬¼ÙÈô³ÌÐòÔ±²»×ñÊص÷Óá¡super¡£clone£¨£©µÄ¡°ÕýÈ·¡±·½·¨£¬ÓÖ»á³öÏÖʲôÇé¿ö¡¡

ÄØ£¿ÔÚBackOn¡¡ÖУ¬´ó¼Ò¿É¿´µ½Êµ¼Ê»á·¢Éúʲô¡£Õâ¸öÀàÓÃÒ»¸ö¶ÀÁ¢µÄ·½·¨duplicate£¨£©ÖÆ×÷µ±Ç°¶ÔÏóµÄÒ»¸ö¡¡

¸±±¾£¬²¢ÔÚ¡¡clone£¨£©ÄÚ²¿µ÷ÓÃÕâ¸ö·½·¨£¬¶ø²»Êǵ÷ÓÃsuper¡£clone£¨£©¡£Î¥ÀýÓÀÔ¶²»»á²úÉú£¬¶øÇÒÐÂÀàÊÇ¿ÉÒÔ¿Ë¡¡

¡µÄ¡£Òò´Ë£¬ÎÒÃDz»ÄÜÒÀÀµ¡°ÖÀ¡±³öÒ»¸öÎ¥ÀýµÄ·½·¨À´·ÀÖ¹²úÉúÒ»¸ö¿É¿Ë¡µÄÀࡣΨһ°²È«µÄ·½·¨ÔÚ¡¡

ReallyNoMore¡¡Öеõ½ÁËÑÝʾ£¬ËüÉèΪ¡¡final£¬ËùÒÔ²»¿É¼Ì³Ð¡£ÕâÒâζ׿ÙÈçclone£¨£©ÔÚ¡¡final¡¡ÀàÖÐÖÀ³öÁËÒ»¡¡

¸öÎ¥Àý£¬±ã²»ÄÜͨ¹ý¼Ì³ÐÀ´½øÐÐÐ޸ģ¬²¢¿ÉÓÐЧµØ½ûÖ¹¿Ë¡£¨²»ÄÜ´ÓÒ»¸öÓµÓÐÈÎÒâ¼Ì³Ð¼¶ÊýµÄÀàÖÐÃ÷È·µ÷Óá¡

Object¡£clone£¨£©£»Ö»Äܵ÷Óá¡super¡£clone£¨£©£¬ËüÖ»¿É·ÃÎÊÖ±½Ó»ù´¡Àࣩ¡£Òò´Ë£¬Ö»ÒªÖÆ×÷һЩÉæ¼°°²È«ÎÊÌâ¡¡

µÄ¶ÔÏ󣬾Í×îºÃ°ÑÄÇЩÀàÉèΪfinal¡£¡¡¡¡

ÔÚÀàCheckCloneable¡¡ÖУ¬ÎÒÃÇ¿´µ½µÄµÚÒ»¸öÀàÊÇtryToClone£¨£©£¬ËüÄܽÓÄÉÈκÎOrdinary¡¡¶ÔÏ󣬲¢Óá¡

instanceof¼ì²éËüÊÇ·ñÄܹ»¿Ë¡¡£Èô´ð°¸Êǿ϶¨µÄ£¬¾Í½«¶ÔÏóÔìÐͳÉΪһ¸ö¡¡IsCloneable£¬µ÷ÓÃclone£¨£©£¬¡¡

²¢½«½á¹ûÔìÐÍ»ØOrdinary£¬×îºó²¶»ñÓпÉÄܲúÉúµÄÈκÎÎ¥Àý¡£Çë×¢ÒâÓÃÔËÐÐÆÚÀàÐͼø¶¨£¨¼ûµÚ¡¡11Õ£©´òÓ¡¡¡

³öÀàÃû£¬Ê¹×Ô¼º¿´µ½·¢ÉúµÄÒ»ÇÐÇé¿ö¡£¡¡¡¡

ÔÚmain£¨£©ÖУ¬ÎÒÃÇ´´½¨Á˲»Í¬ÀàÐ͵ÄOrdinary¡¡¶ÔÏ󣬲¢ÔÚÊý×鶨ÒåÖÐÉÏËÝÔìÐͳÉΪ¡¡Ordinary¡¡¡£ÔÚÕâÖ®ºóµÄ¡¡

Í·Á½ÐдúÂë´´½¨ÁËÒ»¸ö´¿´âµÄ¡¡Ordinary¡¡¶ÔÏ󣬲¢ÊÔͼ¶ÔÆä¿Ë¡¡£È»¶ø£¬ÕâЩ´úÂë²»»áµÃµ½±àÒ룬ÒòΪ¡¡

clone£¨£©ÊÇ¡¡Object¡¡ÖеÄÒ»¸öprotected¡¡£¨Êܵ½±£»¤µÄ£©·½·¨¡£´úÂëÊ£ÓàµÄ²¿·Ö½«±éÀúÊý×飬²¢ÊÔ×Å¿Ë¡ÿ¸ö¡¡

¶ÔÏ󣬷ֱ𱨸æËüÃǵijɹ¦»òʧ°Ü¡£Êä³öÈçÏ£º¡¡¡¡

¡¡¡¡

Attempting¡¡IsCloneable¡¡¡¡

Cloned¡¡IsCloneable¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡365¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡367¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

Attempting¡¡NoMore¡¡¡¡

Could¡¡not¡¡clone¡¡NoMore¡¡¡¡

Attempting¡¡TryMore¡¡¡¡

Could¡¡not¡¡clone¡¡TryMore¡¡¡¡

Attempting¡¡BackOn¡¡¡¡

Cloned¡¡BackOn¡¡¡¡

Attempting¡¡ReallyNoMore¡¡¡¡

Could¡¡not¡¡clone¡¡ReallyNoMore¡¡¡¡

¡¡¡¡

×ÜÖ®£¬Èç¹ûÏ£ÍûÒ»¸öÀàÄܹ»¿Ë¡£¬ÄÇô£º¡¡¡¡

£¨1£©¡¡ÊµÏÖCloneable¡¡½Ó¿Ú¡¡¡¡

£¨2£©¡¡¸²¸Ç¡¡clone£¨£©¡¡¡¡

£¨3£©¡¡ÔÚ×Ô¼ºµÄclone£¨£©Öе÷ÓÃsuper¡£clone£¨£©¡¡¡¡

£¨4£©¡¡ÔÚ×Ô¼ºµÄclone£¨£©ÖⶻñÎ¥Àý¡¡¡¡

ÕâһϵÁв½ÖèÄÜ´ïµ½×îÀíÏëµÄЧ¹û¡£¡¡¡¡



12¡£3¡£1¡¡¸±±¾¹¹½¨Æ÷¡¡¡¡



¿Ë¡¿´ÆðÀ´ÒªÇó½øÐзdz£¸´ÔÓµÄÉèÖã¬Ëƺõ»¹¸ÃÓÐÁíÒ»ÖÖÌæ´ú·½°¸¡£Ò»¸ö°ì·¨ÊÇÖÆ×÷ÌØÊâµÄ¹¹½¨Æ÷£¬ÁîÆ为¡¡

Ôð¸´ÖÆÒ»¸ö¶ÔÏó¡£ÔÚC£«£«ÖУ¬Õâ½Ð×÷¡°¸±±¾¹¹½¨Æ÷¡±¡£¸Õ¿ªÊ¼µÄʱºò£¬ÕâºÃÏóÊÇÒ»Öַdz£ÏÔÈ»µÄ½â¾ö·½°¸¡¡

¡¡£¨Èç¹ûÄãÊÇ¡¡C£«£«³ÌÐòÔ±£¬Õâ¸ö·½·¨¾Í¸üÏÔÇ×ÇУ©¡£ÏÂÃæÊÇÒ»¸öʵ¼ÊµÄÀý×Ó£º¡¡¡¡

¡¡¡¡

//£º¡¡CopyConstructor¡£java¡¡¡¡

//¡¡A¡¡constructor¡¡for¡¡copying¡¡an¡¡object¡¡¡¡

//¡¡of¡¡the¡¡same¡¡type£»¡¡as¡¡an¡¡attempt¡¡to¡¡create¡¡¡¡

//¡¡a¡¡local¡¡copy¡£¡¡¡¡

¡¡¡¡

class¡¡FruitQualities¡¡£û¡¡¡¡

¡¡¡¡private¡¡int¡¡weight£»¡¡¡¡

¡¡¡¡private¡¡int¡¡color£»¡¡¡¡

¡¡¡¡private¡¡int¡¡firmness£»¡¡¡¡

¡¡¡¡private¡¡int¡¡ripeness£»¡¡¡¡

¡¡¡¡private¡¡int¡¡smell£»¡¡¡¡

¡¡¡¡//¡¡etc¡£¡¡¡¡

¡¡¡¡FruitQualities£¨£©¡¡£û¡¡//¡¡Default¡¡constructor¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡do¡¡something¡¡meaningful¡£¡£¡£¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡//¡¡Other¡¡constructors£º¡¡¡¡

¡¡¡¡//¡¡¡£¡£¡£¡¡¡¡

¡¡¡¡//¡¡Copy¡¡constructor£º¡¡¡¡

¡¡¡¡FruitQualities£¨FruitQualities¡¡f£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡weight¡¡=¡¡f¡£weight£»¡¡¡¡

¡¡¡¡¡¡¡¡color¡¡=¡¡f¡£color£»¡¡¡¡

¡¡¡¡¡¡¡¡firmness¡¡=¡¡f¡£firmness£»¡¡¡¡

¡¡¡¡¡¡¡¡ripeness¡¡=¡¡f¡£ripeness£»¡¡¡¡

¡¡¡¡¡¡¡¡smell¡¡=¡¡f¡£smell£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡etc¡£¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡Seed¡¡£û¡¡¡¡

¡¡¡¡//¡¡Members¡£¡£¡£¡¡¡¡

¡¡¡¡Seed£¨£©¡¡£û¡¡/*¡¡Default¡¡constructor¡¡*/¡¡£ý¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡366¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡368¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡Seed£¨Seed¡¡s£©¡¡£û¡¡/*¡¡Copy¡¡constructor¡¡*/¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡Fruit¡¡£û¡¡¡¡

¡¡¡¡private¡¡FruitQualities¡¡fq£»¡¡¡¡

¡¡¡¡private¡¡int¡¡seeds£»¡¡¡¡

¡¡¡¡private¡¡Seed£§£§¡¡s£»¡¡¡¡

¡¡¡¡Fruit£¨FruitQualities¡¡q£»¡¡int¡¡seedCount£©¡¡£û¡¡¡¡¡¡

¡¡¡¡¡¡¡¡fq¡¡=¡¡q£»¡¡¡¡

¡¡¡¡¡¡¡¡seeds¡¡=¡¡seedCount£»¡¡¡¡

¡¡¡¡¡¡¡¡s¡¡=¡¡new¡¡Seed£§seeds£§£»¡¡¡¡

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

¡¡¡¡¡¡¡¡¡¡¡¡s£§i£§¡¡=¡¡new¡¡Seed£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡//¡¡Other¡¡constructors£º¡¡¡¡

¡¡¡¡//¡¡¡£¡£¡£¡¡¡¡

¡¡¡¡//¡¡Copy¡¡constructor£º¡¡¡¡

¡¡¡¡Fruit£¨Fruit¡¡f£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡fq¡¡=¡¡new¡¡FruitQualities£¨f¡£fq£©£»¡¡¡¡

¡¡¡¡¡¡¡¡seeds¡¡=¡¡f¡£seeds£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Call¡¡all¡¡Seed¡¡copy¡­constructors£º¡¡¡¡

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

¡¡¡¡¡¡¡¡¡¡¡¡s£§i£§¡¡=¡¡new¡¡Seed£¨f¡£s£§i£§£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Other¡¡copy¡­construction¡¡activities¡£¡£¡£¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡//¡¡To¡¡allow¡¡derived¡¡constructors¡¡£¨or¡¡other¡¡¡¡¡¡

¡¡¡¡//¡¡methods£©¡¡to¡¡put¡¡in¡¡different¡¡qualities£º¡¡¡¡

¡¡¡¡protected¡¡void¡¡addQualities£¨FruitQualities¡¡q£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡fq¡¡=¡¡q£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡protected¡¡FruitQualities¡¡getQualities£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡fq£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡Tomato¡¡extends¡¡Fruit¡¡£û¡¡¡¡

¡¡¡¡Tomato£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡super£¨new¡¡FruitQualities£¨£©£»¡¡100£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡Tomato£¨Tomato¡¡t£©¡¡£û¡¡//¡¡Copy¡­constructor¡¡¡¡

¡¡¡¡¡¡¡¡super£¨t£©£»¡¡//¡¡Upcast¡¡for¡¡base¡¡copy¡­constructor¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Other¡¡copy¡­construction¡¡activities¡£¡£¡£¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡ZebraQualities¡¡extends¡¡FruitQualities¡¡£û¡¡¡¡

¡¡¡¡private¡¡int¡¡stripedness£»¡¡¡¡

¡¡¡¡ZebraQualities£¨£©¡¡£û¡¡//¡¡Default¡¡constructor¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡do¡¡something¡¡meaningful¡£¡£¡£¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡ZebraQualities£¨ZebraQualities¡¡z£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡super£¨z£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡367¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡369¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡stripedness¡¡=¡¡z¡£stripedness£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

class¡¡GreenZebra¡¡extends¡¡Tomato¡¡£û¡¡¡¡

¡¡¡¡GreenZebra£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡addQualities£¨new¡¡ZebraQualities£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡GreenZebra£¨GreenZebra¡¡g£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡super£¨g£©£»¡¡//¡¡Calls¡¡Tomato£¨Tomato£©¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Restore¡¡the¡¡right¡¡qualities£º¡¡¡¡

¡¡¡¡¡¡¡¡addQualities£¨new¡¡ZebraQualities£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡void¡¡evaluate£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡ZebraQualities¡¡zq¡¡=¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£¨ZebraQualities£©getQualities£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Do¡¡something¡¡with¡¡the¡¡qualities¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡¡£¡£¡£¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡CopyConstructor¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡ripen£¨Tomato¡¡t£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Use¡¡the¡¡¡¨copy¡¡constructor¡¨£º¡¡¡¡

¡¡¡¡¡¡¡¡t¡¡=¡¡new¡¡Tomato£¨t£©£»¡¡¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨In¡¡ripen£»¡¡t¡¡is¡¡a¡¡¡¨¡¡£«¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡t¡£getClass£¨£©¡£getName£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡slice£¨Fruit¡¡f£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡f¡¡=¡¡new¡¡Fruit£¨f£©£»¡¡//¡¡Hmmm¡£¡£¡£¡¡will¡¡this¡¡work£¿¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨In¡¡slice£»¡¡f¡¡is¡¡a¡¡¡¨¡¡£«¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡f¡£getClass£¨£©¡£getName£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

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

¡¡¡¡¡¡¡¡Tomato¡¡tomato¡¡=¡¡new¡¡Tomato£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡ripen£¨tomato£©£»¡¡//¡¡OK¡¡¡¡

¡¡¡¡¡¡¡¡slice£¨tomato£©£»¡¡//¡¡OOPS£¡¡¡¡¡

¡¡¡¡¡¡¡¡GreenZebra¡¡g¡¡=¡¡new¡¡GreenZebra£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡ripen£¨g£©£»¡¡//¡¡OOPS£¡¡¡¡¡

¡¡¡¡¡¡¡¡slice£¨g£©£»¡¡//¡¡OOPS£¡¡¡¡¡

¡¡¡¡¡¡¡¡g¡£evaluate£¨£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

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

¡¡¡¡

Õâ¸öÀý×ÓµÚÒ»ÑÛ¿´ÉÏÈ¥ÏÔµÃÓеãÆæ¹Ö¡£²»Í¬Ë®¹ûµÄÖÊÁ¿¿Ï¶¨ÓÐËùÇø±ð£¬µ«ÎªÊ²Ã´Ö»ÊÇ°Ñ´ú±íÄÇЩÖÊÁ¿µÄÊý¾Ý¡¡

³ÉÔ±Ö±½ÓÖÃÈëFruit¡¡£¨Ë®¹û£©ÀࣿÓÐÁ½·½Ãæ¿ÉÄܵÄÔ­Òò¡£µÚÒ»¸öÊÇÎÒÃÇ¿ÉÄÜÏë¼ò±ãµØ²åÈë»òÐÞ¸ÄÖÊÁ¿¡£×¢Òâ¡¡

Fruit¡¡ÓÐÒ»¸öprotected¡¡£¨Êܵ½±£»¤µÄ£©addQualities£¨£©·½·¨£¬ËüÔÊÐíÑÜÉúÀàÀ´½øÐÐÕâЩ²åÈë»òÐ޸IJÙ×÷£¨´ó¡¡

¼Ò»òÐí»áÈÏΪ×îºÏºõÂß¼­µÄ×ö·¨ÊÇÔÚFruit¡¡ÖÐʹÓÃÒ»¸öprotected¡¡¹¹½¨Æ÷£¬ÓÃËü»ñÈ¡FruitQualities¡¡²ÎÊý£¬¡¡

µ«¹¹½¨Æ÷²»Äܼ̳У¬ËùÒÔ²»¿ÉÔÚµÚ¶þ¼¶»ò¼¶Êý¸üÉîµÄÀàÖÐʹÓÃËü£©¡£Í¨¹ý½«Ë®¹ûµÄÖÊÁ¿ÖÃÈëÒ»¸ö¶ÀÁ¢µÄÀ࣬¡¡

¿ÉÒԵõ½¸ü´óµÄÁé»îÐÔ£¬ÆäÖаüÀ¨¿ÉÒÔÔÚÌض¨¡¡Fruit¡¡¶ÔÏóµÄ´æÔÚÆÚ¼äÖÐ;¸ü¸ÄÖÊÁ¿¡£¡¡¡¡

Ö®ËùÒÔ½«FruitQualities¡¡ÉèΪһ¸ö¶ÀÁ¢µÄ¶ÔÏó£¬ÁíÒ»¸öÔ­ÒòÊÇ¿¼Âǵ½ÎÒÃÇÓÐʱϣÍûÌí¼ÓеÄÖÊÁ¿£¬»òÕßͨ¹ý¡¡

¼Ì³ÐÓë¶àÐÎÐԸıäÐÐΪ¡£×¢Òâ¶ÔGreenZebra¡¡À´Ëµ£¨Õâʵ¼ÊÊÇÎ÷ºìÊÁµÄÒ»Àࡪ¡ªÎÒÒÑÔÔÖֳɹ¦£¬ËüÃǼòÖ±ÁîÈË¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡368¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡370¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

ÄÑÒÔÖÃÐÅ£©£¬¹¹½¨Æ÷»áµ÷ÓÃaddQualities£¨£©£¬²¢ÎªÆä´«µÝÒ»¸öZebraQualities¡¡¶ÔÏ󡣸öÔÏóÊÇ´Ó¡¡

FruitQualities¡¡ÑÜÉú³öÀ´µÄ£¬ËùÒÔÄÜÓë»ù´¡ÀàÖеġ¡FruitQualities¡¡¾ä±úÁªÏµÔÚÒ»Æð¡£µ±È»£¬Ò»µ©¡¡

GreenZebra¡¡Ê¹Óá¡FruitQualities£¬¾Í±ØÐ뽫ÆäÏÂËÝÔìÐͳÉΪÕýÈ·µÄÀàÐÍ£¨¾ÍÏóevaluate£¨£©ÖÐչʾµÄÄÇ¡¡

Ñù£©£¬µ«Ëü¿Ï¶¨ÖªµÀÀàÐÍÊÇZebraQualities¡£¡¡¡¡

´ó¼ÒÒ²¿´µ½ÓÐÒ»¸ö¡¡Seed¡¡£¨ÖÖ×Ó£©À࣬Fruit¡¡£¨´ó¼Ò¶¼ÖªµÀ£¬Ë®¹ûº¬ÓÐ×Ô¼ºµÄÖÖ×Ó£©°üº¬ÁËÒ»¸öSeed¡¡Êý×é¡£¡¡¡¡

×îºó£¬×¢Òâÿ¸öÀ඼ÓÐÒ»¸ö¸±±¾¹¹½¨Æ÷£¬¶øÇÒÿ¸ö¸±±¾¹¹½¨Æ÷¶¼±ØÐë¹ØÐÄΪ»ù´¡ÀàºÍ³ÉÔ±¶ÔÏóµ÷Óø±±¾¹¹½¨¡¡

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