ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
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¡¡Êý×é¡£¡¡¡¡
×îºó£¬×¢Òâÿ¸öÀ඼ÓÐÒ»¸ö¸±±¾¹¹½¨Æ÷£¬¶øÇÒÿ¸ö¸±±¾¹¹½¨Æ÷¶¼±ØÐë¹ØÐÄΪ»ù´¡ÀàºÍ³ÉÔ±¶ÔÏóµ÷Óø±±¾¹¹½¨¡¡
Æ÷µ
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡