Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ98²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¡¡¡
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¡¡Êý×é¡£¡¡¡¡
×îºó£¬×¢Òâÿ¸öÀ඼ÓÐÒ»¸ö¸±±¾¹¹½¨Æ÷£¬¶øÇÒÿ¸ö¸±±¾¹¹½¨Æ÷¶¼±ØÐë¹ØÐÄΪ»ù´¡ÀàºÍ³ÉÔ±¶ÔÏóµ÷Óø±±¾¹¹½¨¡¡
Æ÷µÄÎÊÌ⣬´Ó¶ø»ñµÃ¡°Éî²ã¸´ÖÆ¡±µÄЧ¹û¡£¶Ô¸±±¾¹¹½¨Æ÷µÄ²âÊÔÊÇÔÚ¡¡CopyConstructor¡¡ÀàÄÚ½øÐеġ£·½·¨¡¡
ripen£¨£©ÐèÒª»ñÈ¡Ò»¸öTomato¡¡²ÎÊý£¬²¢¶ÔÆäÖ´Ðи±±¾¹¹½¨¹¤×÷£¬ÒԱ㸴ÖƶÔÏ󣺡¡¡¡
t¡¡=¡¡new¡¡Tomato£¨t£©£»¡¡¡¡
¶ø¡¡slice£¨£©ÐèÒª»ñÈ¡Ò»¸ö¸ü³£¹æµÄ¡¡Fruit¡¡¶ÔÏ󣬶øÇÒ¶ÔËü½øÐи´ÖÆ£º¡¡¡¡
f¡¡=¡¡new¡¡Fruit£¨f£©£»¡¡¡¡
ËüÃǶ¼ÔÚmain£¨£©ÖаéË治ͬÖÖÀàµÄFruit¡¡½øÐвâÊÔ¡£ÏÂÃæÊÇÊä³ö½á¹û£º¡¡¡¡
¡¡¡¡
In¡¡ripen£»¡¡t¡¡is¡¡a¡¡Tomato¡¡¡¡
In¡¡slice£»¡¡f¡¡is¡¡a¡¡Fruit¡¡¡¡
In¡¡ripen£»¡¡t¡¡is¡¡a¡¡Tomato¡¡¡¡
In¡¡slice£»¡¡f¡¡is¡¡a¡¡Fruit¡¡¡¡
¡¡¡¡
´ÓÖпÉÒÔ¿´³öÒ»¸öÎÊÌâ¡£ÔÚslice£¨£©ÄÚ²¿¶ÔTomato¡¡½øÐÐÁ˸±±¾¹¹½¨¹¤×÷ÒԺ󣬽á¹û±ã²»ÔÙÊÇÒ»¸ö¡¡Tomato¡¡¶Ô¡¡
Ï󣬶øÖ»ÊÇÒ»¸öFruit¡£ËüÒѶªÊ§ÁË×÷Ϊһ¸öTomato¡¡£¨Î÷ºìÊÁ£©µÄËùÓÐÌØÕ÷¡£´ËÍ⣬Èç¹û²ÉÓÃÒ»¸ö¡¡
GreenZebra£¬ripen£¨£©ºÍ¡¡slice£¨£©»á°ÑËü·Ö±ðת»»³ÉÒ»¸ö¡¡Tomato¡¡ºÍÒ»¸ö¡¡Fruit¡£ËùÒԷdz£²»ÐÒ£¬¼ÙÈçÏëÖÆ×÷¶Ô¡¡
ÏóµÄÒ»¸ö±¾µØ¸±±¾£¬Java¡¡Öеĸ±±¾¹¹½¨Æ÷±ã²»ÊÇÌرðÊʺÏÎÒÃÇ¡£¡¡¡¡
¡¡¡¡
1¡£¡¡ÎªÊ²Ã´ÔÚC£«£«µÄ×÷ÓñÈÔÚ¡¡Java¡¡Öд󣿡¡¡¡
¸±±¾¹¹½¨Æ÷ÊÇC£«£«µÄÒ»¸ö»ù±¾¹¹³É²¿·Ö£¬ÒòΪËüÄÜ×Ô¶¯²úÉú¶ÔÏóµÄÒ»¸ö±¾µØ¸±±¾¡£µ«Ç°ÃæµÄÀý×Óȷʵ֤Ã÷ÁË¡¡
Ëü²»ÊʺÏÔÚ¡¡Java¡¡ÖÐʹÓã¬ÎªÊ²Ã´ÄØ£¿ÔÚ¡¡Java¡¡ÖУ¬ÎÒÃDzٿصÄÒ»Çж«Î÷¶¼ÊǾä±ú£¬¶øÔÚC£«£«ÖУ¬È´¿ÉÒÔʹÓá¡
ÀàËÆÓÚ¾ä±úµÄ¶«Î÷£¬Ò²ÄÜÖ±½Ó´«µÝ¶ÔÏó¡£Õâʱ±ãÒªÓõ½C£«£«µÄ¸±±¾¹¹½¨Æ÷£ºÖ»ÒªÏë»ñµÃÒ»¸ö¶ÔÏ󣬲¢°´Öµ´«¡¡
µÝËü£¬¾Í¿ÉÒÔ¸´ÖƶÔÏó¡£ËùÒÔËüÔÚ¡¡C£«£«ÀïÄܺܺõع¤×÷£¬µ«Ó¦×¢ÒâÕâÌ×»úÖÆÔÚJava¡¡ÀïÊǺܲ»Í¨µÄ£¬ËùÒÔ²»Òª¡¡
ÓÃËü¡£¡¡¡¡
12¡£4¡¡Ö»¶ÁÀà¡¡¡¡
¾¡¹ÜÔÚһЩÌض¨µÄ³¡ºÏ£¬ÓÉclone£¨£©²úÉúµÄ±¾µØ¸±±¾Äܹ»»ñµÃÎÒÃÇÏ£ÍûµÄ½á¹û£¬µ«³ÌÐòÔ±£¨·½·¨µÄ×÷Õߣ©²»¡¡
µÃ²»Ç××Ô½ûÖ¹±ðÃû´¦ÀíµÄ¸±×÷Ó᣼ÙÈçÏëÖÆ×÷Ò»¸ö¿â£¬ÁîÆä¾ßÓг£¹æÓÃ;£¬µ«È´²»Äܵ£±£Ëü¿Ï¶¨ÄÜÔÚÕýÈ·µÄ¡¡
ÀàÖеÃÒÔ¿Ë¡£¬ÕâʱÓÖ¸ÃÔõô°ìÄØ£¿¸üÓпÉÄܵÄÒ»ÖÖÇé¿öÊÇ£¬¼ÙÈçÎÒÃÇÏëÈñðÃû·¢»Ó»ý¼«µÄ×÷Ó᪡ª½ûÖ¹²»¡¡
±ØÒªµÄ¶ÔÏó¸´ÖÆ¡ª¡ªµ«È´²»Ï£Íû¿´µ½ÓÉ´ËÔì³ÉµÄ¸±×÷Óã¬ÄÇôÓÖ¸ÃÈçºÎ´¦ÀíÄØ£¿¡¡¡¡
Ò»¸ö°ì·¨ÊÇ´´½¨¡°²»±ä¶ÔÏó¡±£¬ÁîÆä´ÓÊôÓÚÖ»¶ÁÀà¡£¿É¶¨ÒåÒ»¸öÌØÊâµÄÀ࣬ʹÆäÖÐûÓÐÈκη½·¨ÄÜÔì³É¶ÔÏó¡¡
ÄÚ²¿×´Ì¬µÄ¸Ä±ä¡£ÔÚÕâÑùµÄÒ»¸öÀàÖУ¬±ðÃû´¦ÀíÊÇûÓÐÎÊÌâµÄ¡£ÒòΪÎÒÃÇÖ»ÄܶÁÈ¡ÄÚ²¿×´Ì¬£¬ËùÒÔµ±¶à´¦´ú¡¡
Â붼¶ÁÈ¡ÏàͬµÄ¶ÔÏóʱ£¬²»»á³öÏÖÈκθ±×÷Óᣡ¡¡¡
×÷Ϊ¡°²»±ä¶ÔÏó¡±Ò»¸ö¼òµ¥Àý×Ó£¬Java¡¡µÄ±ê×¼¿â°üº¬ÁË¡°·â×°Æ÷¡±£¨wrapper¡¡£©À࣬¿ÉÓÃÓÚËùÓлù±¾Êý¾ÝÀà¡¡
ÐÍ¡£´ó¼Ò¿ÉÄÜÒÑ·¢ÏÖÁËÕâÒ»µã£¬Èç¹ûÏëÔÚÒ»¸öÏóVector¡¡£¨Ö»²ÉÓÃObject¡¡¾ä±ú£©ÕâÑùµÄ¼¯ºÏÀï±£´æÒ»¸ö¡¡int¡¡
ÊýÖµ£¬¿ÉÒÔ½«Õâ¸ö¡¡int¡¡·â×°µ½±ê×¼¿âµÄ¡¡IntegerÀàÄÚ²¿¡£ÈçÏÂËùʾ£º¡¡¡¡
¡¡¡¡
//£º¡¡ImmutableInteger¡£java¡¡¡¡
//¡¡The¡¡Integer¡¡class¡¡cannot¡¡be¡¡changed¡¡¡¡
import¡¡java¡£util¡£*£»¡¡¡¡
¡¡¡¡
public¡¡class¡¡ImmutableInteger¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Vector¡¡v¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡10£»¡¡i£«£«£©¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡v¡£addElement£¨new¡¡Integer£¨i£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡But¡¡how¡¡do¡¡you¡¡change¡¡the¡¡int¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡369¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡371¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡inside¡¡the¡¡Integer£¿¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
IntegerÀࣨÒÔ¼°»ù±¾µÄ¡°·â×°Æ÷¡±ÀࣩÓüòµ¥µÄÐÎʽʵÏÖÁË¡°²»±äÐÔ¡±£ºËüÃÇûÓÐÌṩ¿ÉÒÔÐ޸ĶÔÏóµÄ·½¡¡
·¨¡£¡¡¡¡
ÈôȷʵÐèÒªÒ»¸öÈÝÄÉÁË»ù±¾Êý¾ÝÀàÐ͵ĶÔÏ󣬲¢Ïë¶Ô»ù±¾Êý¾ÝÀàÐͽøÐÐÐ޸ģ¬¾Í±ØÐëÇ××Ô´´½¨ËüÃÇ¡£ÐÒÔ˵ġ¡
ÊÇ£¬²Ù×÷·Ç³£¼òµ¥£º¡¡¡¡
¡¡¡¡
//£º¡¡MutableInteger¡£java¡¡¡¡
//¡¡A¡¡changeable¡¡wrapper¡¡class¡¡¡¡
import¡¡java¡£util¡£*£»¡¡¡¡
¡¡¡¡
class¡¡IntValue¡¡£û¡¡¡¡¡¡
¡¡¡¡int¡¡n£»¡¡¡¡
¡¡¡¡IntValue£¨int¡¡x£©¡¡£û¡¡n¡¡=¡¡x£»¡¡£ý¡¡¡¡
¡¡¡¡public¡¡String¡¡toString£¨£©¡¡£û¡¡¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡Integer¡£toString£¨n£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡MutableInteger¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Vector¡¡v¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡10£»¡¡i£«£«£©¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡v¡£addElement£¨new¡¡IntValue£¨i£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨v£©£»¡¡¡¡
¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡v¡£size£¨£©£»¡¡i£«£«£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨IntValue£©v¡£elementAt£¨i£©£©¡£n£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨v£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
×¢Òân¡¡ÔÚÕâÀï¼ò»¯ÁËÎÒÃǵıàÂë¡£¡¡¡¡
ÈôĬÈϵijõʼ»¯ÎªÁãÒѾ×ã¹»£¨±ã²»ÐèÒª¹¹½¨Æ÷£©£¬¶øÇÒ²»Óÿ¼ÂÇ°ÑËü´òÓ¡³öÀ´£¨±ã²»ÐèÒª¡¡toString¡¡£©£¬ÄÇ¡¡
ô¡¡IntValue¡¡ÉõÖÁ»¹Äܸü¼Ó¼òµ¥¡£ÈçÏÂËùʾ£º¡¡¡¡
class¡¡IntValue¡¡£û¡¡int¡¡n£»¡¡£ý¡¡¡¡
½«ÔªËØÈ¡³öÀ´£¬ÔÙ¶ÔÆä½øÐÐÔìÐÍ£¬Õâ¶àÉÙÏÔµÃÓÐЩ±¿×¾£¬µ«ÄÇÊÇVector¡¡µÄÎÊÌ⣬²»ÊÇIntValue¡¡µÄ´í¡£¡¡¡¡
12¡£4¡£1¡¡´´½¨Ö»¶ÁÀà¡¡¡¡
ÍêÈ«¿ÉÒÔ´´½¨×Ô¼ºµÄÖ»¶ÁÀ࣬ÏÂÃæÊǸö¼òµ¥µÄÀý×Ó£º¡¡¡¡
¡¡¡¡
//£º¡¡Immutable1¡£java¡¡¡¡
//¡¡Objects¡¡that¡¡cannot¡¡be¡¡modified¡¡¡¡
//¡¡are¡¡immune¡¡to¡¡aliasing¡£¡¡¡¡
¡¡¡¡
public¡¡class¡¡Immutable1¡¡£û¡¡¡¡
¡¡¡¡private¡¡int¡¡data£»¡¡¡¡
¡¡¡¡public¡¡Immutable1£¨int¡¡initVal£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡data¡¡=¡¡initVal£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡int¡¡read£¨£©¡¡£û¡¡return¡¡data£»¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡370¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡372¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡public¡¡boolean¡¡nonzero£¨£©¡¡£û¡¡return¡¡data¡¡£¡=¡¡0£»¡¡£ý¡¡¡¡
¡¡¡¡public¡¡Immutable1¡¡quadruple£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡return¡¡new¡¡Immutable1£¨data¡¡*¡¡4£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡static¡¡void¡¡f£¨Immutable1¡¡i1£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Immutable1¡¡quad¡¡=¡¡i1¡£quadruple£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨i1¡¡=¡¡¡¨¡¡£«¡¡i1¡£read£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨quad¡¡=¡¡¡¨¡¡£«¡¡quad¡£read£¨£©£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Immutable1¡¡x¡¡=¡¡new¡¡Immutable1£¨47£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨x¡¡=¡¡¡¨¡¡£«¡¡x¡£read£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡f£¨x£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨x¡¡=¡¡¡¨¡¡£«¡¡x¡£read£¨£©£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ËùÓÐÊý¾Ý¶¼ÉèΪprivate£¬¿ÉÒÔ¿´µ½Ã»ÓÐÈκÎpublic¡¡·½·¨¶ÔÊý¾Ý×÷³öÐ޸ġ£ÊÂʵÉÏ£