Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ90²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
£¨9£©¡¡¸ù¾Ý±¾ÕÂÕýÎĵÄ˵Ã÷Ð޸ijÌÐò¡¡CADState¡£java¡¡¡£¡¡¡¡
£¨10£©¡¡ÔÚµÚ¡¡7¡¡Õ£¨Öм䲿·Ö£©ÕÒµ½GreenhouseControls¡£java¡¡Ê¾Àý£¬ËüÓ¦¸ÃÓÉÈý¸öÎļþ¹¹³É¡£ÔÚ¡¡
GreenhouseControls¡£java¡¡ÖУ¬Restart£¨£©ÄÚ²¿ÀàÓÐÒ»¸öÓ²±àÂëµÄʼþ¼¯¡£ÇëÐÞ¸ÄÕâ¸ö³ÌÐò£¬Ê¹ÆäÄÜ´ÓÒ»¸öÎÄ¡¡
±¾ÎļþÀﶯ̬¶ÁȡʼþÒÔ¼°ËüÃǵÄÏà¹Øʱ¼ä¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡332¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡334¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡µÚ¡¡11¡¡Õ¡¡¡¡ÔËÐÐÆÚÀàÐͼø¶¨¡¡¡¡
¡¡¡¡
ÔËÐÐÆÚÀàÐͼø¶¨£¨RTTI¡¡£©µÄ¸ÅÄî³õ¿´·Ç³£¼òµ¥¡ª¡ªÊÖÉÏÖ»Óлù´¡ÀàÐ͵ÄÒ»¸ö¾ä±úʱ£¬ÀûÓÃËüÅжÏÒ»¸ö¶ÔÏóµÄ¡¡
ÕýÈ·ÀàÐÍ¡£¡¡¡¡
È»¶ø£¬¶ÔRTTI¡¡µÄÐèÒª±©Â¶³öÁËÃæÏò¶ÔÏóÉè¼ÆÐí¶àÓÐȤ£¨¶øÇÒ¾³£ÊÇÁîÈËÀ§»óµÄ£©µÄÎÊÌ⣬²¢°Ñ³ÌÐòµÄ¹¹ÔìÎÊ¡¡
ÌâÕýʽ°ÚÉÏÁË×ÀÃæ¡£¡¡¡¡
±¾Õ½«ÌÖÂÛÈçºÎÀûÓÃJava¡¡ÔÚÔËÐÐÆÚ¼ä²éÕÒ¶ÔÏóºÍÀàÐÅÏ¢¡£ÕâÖ÷Òª²ÉÈ¡Á½ÖÖÐÎʽ£ºÒ»ÖÖÊÇ¡°´«Í³¡±RTTI¡¡£¬Ëü¼Ù¡¡
¶¨ÎÒÃÇÒÑÔÚ±àÒëºÍÔËÐÐÆÚÓµÓÐËùÓÐÀàÐÍ£»ÁíÒ»ÖÖÊÇ¡¡Java1¡£1¡¡ÌØÓеġ°·´É䡱»úÖÆ£¬ÀûÓÃËü¿ÉÔÚÔËÐÐÆÚ¶ÀÁ¢²é¡¡
ÕÒÀàÐÅÏ¢¡£Ê×ÏÈÌÖÂÛ¡°´«Í³¡±µÄRTTI£¬ÔÙÌÖÂÛ·´ÉäÎÊÌâ¡£¡¡¡¡
11¡£1¡¡¶Ô¡¡RTTI¡¡µÄÐèÒª¡¡¡¡
Ç뿼ÂÇÏÂÃæÕâ¸öÊìϤµÄÀà½á¹¹Àý×Ó£¬ËüÀûÓÃÁ˶àÐÎÐÔ¡£³£¹æÀàÐÍÊÇShape¡¡À࣬¶øÌرðÑÜÉú³öÀ´µÄÀàÐÍÊÇ¡¡
Circle£¬Square¡¡ºÍTriangle¡¡¡£¡¡¡¡
¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
ÕâÊÇÒ»¸öµäÐ͵ÄÀà½á¹¹Ê¾Òâͼ£¬»ù´¡ÀàλÓÚ¶¥²¿£¬ÑÜÉúÀàÏòÏÂÑÓÕ¹¡£ÃæÏò¶ÔÏó±à³ÌµÄ»ù±¾Ä¿±êÊÇÓôóÁ¿´úÂë¡¡
¿ØÖÆ»ù´¡ÀàÐÍ£¨ÕâÀïÊÇ¡¡Shape£©µÄ¾ä±ú£¬ËùÒÔ¼ÙÈç¾ö¶¨Ìí¼ÓÒ»¸öÐÂÀࣨ±ÈÈçRhomboid¡¡£¬´ÓShape¡¡ÑÜÉú£©£¬´Ó¡¡
¶ø¶Ô³ÌÐò½øÐÐÀ©Õ¹£¬ÄÇô²»»áÓ°Ïìµ½ÔÀ´µÄ´úÂë¡£ÔÚÕâ¸öÀý×ÓÖУ¬Shape¡¡½Ó¿ÚÖеĶ¯Ì¬°ó¶¨·½·¨ÊÇdraw£¨£©£¬¡¡
ËùÒÔ¿Í»§³ÌÐòÔ±Òª×öµÄÊÇͨ¹ýÒ»¸öÆÕͨShape¡¡¾ä±úµ÷ÓÃdraw£¨£©¡£draw£¨£©ÔÚËùÓÐÑÜÉúÀàÀﶼ»á±»¸²¸Ç¡£¶øÇÒÓÉ¡¡
ÓÚËüÊÇÒ»¸ö¶¯Ì¬°ó¶¨·½·¨£¬ËùÒÔ¼´Ê¹Í¨¹ýÒ»¸öÆÕͨµÄShape¡¡¾ä±úµ÷ÓÃËü£¬Ò²ÓбíÏÖ³öÕýÈ·µÄÐÐΪ¡£ÕâÕýÊǶࡡ
ÐÎÐÔµÄ×÷Óᣡ¡¡¡
ËùÒÔ£¬ÎÒÃÇÒ»°ã´´½¨Ò»¸öÌض¨µÄ¶ÔÏó£¨Circle£¬Square£¬»òÕß¡¡Triangle¡¡£©£¬°ÑËüÉÏËÝÔìÐ͵½Ò»¸öShape¡¡£¨ºö¡¡
ÂÔ¶ÔÏóµÄÌØÊâÀàÐÍ£©£¬ÒÔºó±ãÔÚ³ÌÐòµÄÊ£Óಿ·ÖʹÓÃÄäÃû¡¡Shape¡¡¾ä±ú¡£¡¡¡¡
×÷Ϊ¶Ô¶àÐÎÐÔºÍÉÏËÝÔìÐ͵ÄÒ»¸ö¼òÒª»Ø¹Ë£¬¿ÉÒÔÏóÏÂÃæÕâÑùΪÉÏÊöÀý×Ó±àÂ루ÈôÖ´ÐÐÕâ¸ö³ÌÐòʱ³öÏÖÀ§ÄÑ£¬¡¡
Çë²Î¿¼µÚ3¡¡ÕÂ3¡£1¡£2¡¡Ð¡½Ú¡°¸³Öµ¡±£©£º¡¡¡¡
¡¡¡¡
//£º¡¡Shapes¡£java¡¡¡¡
package¡¡c11£»¡¡¡¡
import¡¡java¡£util¡£*£»¡¡¡¡
¡¡¡¡
interface¡¡Shape¡¡£û¡¡¡¡
¡¡¡¡void¡¡draw£¨£©£»¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Circle¡¡implements¡¡Shape¡¡£û¡¡¡¡
¡¡¡¡public¡¡void¡¡draw£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Circle¡£draw£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Square¡¡implements¡¡Shape¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡333¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡335¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡public¡¡void¡¡draw£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Square¡£draw£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Triangle¡¡implements¡¡Shape¡¡£û¡¡¡¡
¡¡¡¡public¡¡void¡¡draw£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Triangle¡£draw£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡Shapes¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡Vector¡¡s¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡s¡£addElement£¨new¡¡Circle£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡s¡£addElement£¨new¡¡Square£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡s¡£addElement£¨new¡¡Triangle£¨£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡Enumeration¡¡e¡¡=¡¡s¡£elements£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡while£¨e¡£hasMoreElements£¨£©£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£¨£¨Shape£©e¡£nextElement£¨£©£©¡£draw£¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
»ù´¡Àà¿É±àÂë³ÉÒ»¸ö¡¡interface¡¡£¨½Ó¿Ú£©¡¢Ò»¸öabstract¡¡£¨³éÏó£©Àà»òÕßÒ»¸öÆÕͨÀà¡£ÓÉÓÚShape¡¡Ã»ÓÐÕæÕý¡¡
µÄ³ÉÔ±£¨Ò༴Óж¨ÒåµÄ³ÉÔ±£©£¬¶øÇÒ²¢²»ÔÚÒâÎÒÃÇ´´½¨ÁËÒ»¸ö´¿´âµÄShape¡¡¶ÔÏó£¬ËùÒÔ×îÊʺϺÍ×îÁé»îµÄ±í¡¡
´ï·½Ê½±ãÊÇÓÃÒ»¸ö½Ó¿Ú¡£¶øÇÒÓÉÓÚ²»±ØÉèÖÃËùÓÐÄÇЩabstract¡¡¹Ø¼ü×Ö£¬ËùÒÔÕû¸ö´úÂëÒ²ÏԵøüΪÇåˬ¡£¡¡¡¡
ÿ¸öÑÜÉúÀ඼¸²¸ÇÁË»ù´¡Ààdraw¡¡·½·¨£¬ËùÒÔ¾ßÓв»Í¬µÄÐÐΪ¡£ÔÚmain£¨£©Öд´½¨ÁËÌض¨ÀàÐ͵ÄShape£¬È»ºó½«¡¡
ÆäÌí¼Óµ½Ò»¸öVector¡£ÕâÀïÕýÊÇÉÏËÝÔìÐÍ·¢ÉúµÄµØ·½£¬ÒòΪVector¡¡Ö»ÈÝÄÉÁ˶ÔÏó¡£ÓÉÓÚJava¡¡ÖеÄËùÓж«Î÷¡¡
¡¡£¨³ý»ù±¾Êý¾ÝÀàÐÍÍ⣩¶¼ÊǶÔÏó£¬ËùÒÔVector¡¡Ò²ÄÜÈÝÄÉ¡¡Shape¡¡¶ÔÏó¡£µ«ÔÚÉÏËÝÔìÐÍÖÁ¡¡Object¡¡µÄ¹ý³ÌÖУ¬ÈΡ¡
ºÎÌØÊâµÄÐÅÏ¢¶¼»á¶ªÊ§£¬ÆäÖÐÉõÖÁ°üÀ¨¶ÔÏóÊǼ¸ºÎÐÎ×´ÕâÒ»ÊÂʵ¡£¶ÔVect¡¡or¡¡À´Ëµ£¬ËüÃÇÖ»ÊÇObject¡£¡¡¡¡
ÓÃnextElement£¨£©½«Ò»¸öÔªËØ´Ó¡¡Vector¡¡ÌáÈ¡³öÀ´µÄʱºò£¬Çé¿ö±äµÃÉÔ΢ÓÐЩ¸´ÔÓ¡£ÓÉÓÚ¡¡Vector¡¡Ö»ÈÝÄÉ¡¡
Object£¬ËùÒÔ¡¡nextElement£¨£©»á×ÔÈ»µØ²úÉúÒ»¸ö¡¡Object¡¡¾ä±ú¡£µ«ÎÒÃÇÖªµÀËüʵ¼ÊÊǸö¡¡Shape¡¡¾ä±ú£¬¶øÇÒÏ£Íû¡¡
½«Shape¡¡ÏûÏ¢·¢¸øÄǸö¶ÔÏó¡£ËùÒÔÐèÒªÓô«Í³µÄ¡¨£¨Shape£©¡¨·½Ê½ÔìÐͳÉÒ»¸öShape¡£ÕâÊÇRTTI¡¡×î»ù±¾µÄÐΡ¡
ʽ£¬ÒòΪÔÚ¡¡Java¡¡ÖУ¬ËùÓÐÔìÐͶ¼»áÔÚÔËÐÐÆÚ¼äµÃµ½¼ì²é£¬ÒÔÈ·±£ÆäÕýÈ·ÐÔ¡£ÄÇÕýÊÇRTTI¡¡µÄÒâÒåËùÔÚ£ºÔÚÔË¡¡
ÐÐÆÚ£¬¶ÔÏóµÄÀàÐÍ»áµÃµ½¼ø¶¨¡£¡¡¡¡
ÔÚÄ¿Ç°ÕâÖÖÇé¿öÏ£¬RTTI¡¡ÔìÐÍֻʵÏÖÁËÒ»²¿·Ö£ºObject¡¡ÔìÐͳɡ¡Shape£¬¶ø²»ÊÇÔìÐͳÉCircle£¬Square¡¡»òÕß¡¡
Triangle¡¡¡£ÄÇÊÇÓÉÓÚÎÒÃÇÄ¿Ç°Äܹ»¿Ï¶¨µÄΨһÊÂʵ¾ÍÊÇVector¡¡Àï³ä³â׿¸ºÎÐÎ×´£¬¶ø²»ÖªËüÃǵľßÌåÀà±ð¡£¡¡
ÔÚ±àÒëÆڼ䣬ÎÒÃǿ϶¨µÄÒÀ¾ÝÊÇÎÒÃÇ×Ô¼ºµÄ¹æÔò£»¶øÔÚ±àÒëÆڼ䣬ȴÊÇͨ¹ýÔìÐÍÀ´¿Ï¶¨ÕâÒ»µã¡£¡¡¡¡
ÏÖÔڵľÖÃæ»áÓɶàÐÎÐÔ¿ØÖÆ£¬¶øÇÒ»áΪShape¡¡µ÷ÓÃÊʵ±µÄ·½·¨£¬ÒÔ±ãÅжϾä±úµ½µ×ÊÇÌṩCircle£¬Square£¬¡¡
»¹ÊÇÌṩ¸ø¡¡Triangle¡¡¡£¶øÇÒÔÚÒ»°ãÇé¿öÏ£¬±ØÐë±£Ö¤²ÉÓöàÐÎÐÔ·½°¸¡£ÒòΪÎÒÃÇÏ£Íû×Ô¼ºµÄ´úÂ뾡¿ÉÄÜÉÙÖª¡¡
µÀһЩÓë¶ÔÏóµÄ¾ßÌåÀàÐÍÓйصÄÇé¿ö£¬Ö»½«×¢ÒâÁ¦·ÅÔÚijһÀà¶ÔÏó£¨ÕâÀïÊÇShape£©µÄ³£¹æÐÅÏ¢ÉÏ¡£Ö»ÓÐÕâ¡¡
Ñù£¬ÎÒÃǵĴúÂë²Å¸üÒ×ʵÏÖ¡¢Àí½âÒÔ¼°Ð޸ġ£ËùÒÔ˵¶àÐÎÐÔÊÇÃæÏò¶ÔÏó³ÌÐòÉè¼ÆµÄÒ»¸ö³£¹æÄ¿±ê¡£¡¡¡¡
È»¶ø£¬ÈôÅöµ½Ò»¸öÌØÊâµÄ³ÌÐòÉè¼ÆÎÊÌ⣬ֻÓÐÔÚÖªµÀ³£¹æ¾ä±úµÄÈ·ÇÐÀàÐͺ󣬲ÅÄÜ×îÈÝÒ׵ؽâ¾öÕâ¸öÎÊÌ⣬¡¡
Õâ¸öʱºòÓÖ¸ÃÔõô°ìÄØ£¿¾Ù¸öÀý×ÓÀ´Ëµ£¬ÎÒÃÇÓÐʱºòÏëÈÃ×Ô¼ºµÄÓû§½«Ä³Ò»¾ßÌåÀàÐ͵ļ¸ºÎÐÎ×´£¨ÈçÈý½Ç¡¡
ÐΣ©È«¶¼±ä³É×ÏÉ«£¬ÒÔ±ãÍ»³öÏÔʾËüÃÇ£¬²¢¿ìËÙÕÒ³öÕâÒ»ÀàÐ͵ÄËùÓÐÐÎ×´¡£´Ëʱ±ãÒªÓõ½RTTI¡¡¼¼Êõ£¬ÓÃËü²é¡¡
ѯij¸ö¡¡Shape¡¡¾ä±úÒýÓõÄ׼ȷÀàÐÍÊÇʲô¡£¡¡¡¡
11¡£1¡£1¡¡Class¡¡¶ÔÏó¡¡¡¡
ΪÀí½âRTTI¡¡ÔÚ¡¡Java¡¡ÀïÈçºÎ¹¤×÷£¬Ê×ÏȱØÐëÁ˽âÀàÐÍÐÅÏ¢ÔÚÔËÐÐÆÚÊÇÈçºÎ±íʾµÄ¡£ÕâʱҪÓõ½Ò»¸öÃûΪ¡¡
¡¡¡°Class¡¡¶ÔÏó¡±µÄÌØÊâÐÎʽµÄ¶ÔÏó£¬ÆäÖаüº¬ÁËÓëÀàÓйصÄÐÅÏ¢£¨ÓÐʱҲ°ÑËü½Ð×÷¡°ÔªÀࡱ£©¡£ÊÂʵÉÏ£¬ÎÒ¡¡
ÃÇÒªÓá¡Class¡¡¶ÔÏó´´½¨ÊôÓÚij¸öÀàµÄÈ«²¿¡°³£¹æ¡±»ò¡°ÆÕͨ¡±¶ÔÏ󡣡¡¡¡
¶ÔÓÚ×÷Ϊ³ÌÐòÒ»²¿·ÖµÄÿ¸öÀ࣬ËüÃǶ¼ÓÐÒ»¸ö¡¡Class¡¡¶ÔÏó¡£»»ÑÔÖ®£¬Ã¿´Îдһ¸öÐÂÀàʱ£¬Í¬Ê±Ò²»á´´½¨Ò»¸ö¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡334¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡336¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Class¡¡¶ÔÏ󣨸üÇ¡µ±µØ˵£¬ÊDZ£´æÔÚÒ»¸öÍêȫͬÃûµÄ¡£class¡¡ÎļþÖУ©¡£ÔÚÔËÐÐÆÚ£¬Ò»µ©ÎÒÃÇÏëÉú³ÉÄǸöÀàµÄ¡¡
Ò»¸ö¶ÔÏó£¬ÓÃÓÚÖ´ÐгÌÐòµÄ¡¡Java¡¡ÐéÄâ»ú£¨JVM£©Ê×ÏȾͻá¼ì²éÄǸöÀàÐ͵ÄClass¡¡¶ÔÏóÊÇ·ñÒѾÔØÈë¡£ÈôÉÐδ¡¡
ÔØÈ룬JVM¡¡¾Í»á²éÕÒͬÃûµÄ¡£class¡¡Îļþ£¬²¢½«ÆäÔØÈë¡£ËùÒÔJava¡¡³ÌÐòÆô¶¯Ê±²¢²»ÊÇÍêÈ«ÔØÈëµÄ£¬ÕâÒ»µãÓëÐí¡¡
¶à´«Í³ÓïÑÔ¶¼²»Í¬¡£¡¡¡¡
Ò»µ©ÄǸöÀàÐ͵ÄClass¡¡¶ÔÏó½øÈëÄڴ棬¾ÍÓÃËü´´½¨ÄÇÒ»ÀàÐ͵ÄËùÓжÔÏ󡣡¡¡¡
ÈôÕâÖÖ˵·¨¶àÉÙÈÃÄã²úÉúÁËÒ»µã¶ùÃԻ󣬻òÕß²¢Ã»ÓÐÕæÕýÀí½âËü£¬ÏÂÃæÕâ¸öʾ·¶³ÌÐò»òÐíÄÜÌṩ½øÒ»²½µÄ°ï¡¡
Öú£º¡¡¡¡
¡¡¡¡
//£º¡¡SweetShop¡£java¡¡¡¡
//¡¡Examination¡¡of¡¡the¡¡way¡¡the¡¡class¡¡loader¡¡works¡¡¡¡
¡¡¡¡
class¡¡Candy¡¡£û¡¡¡¡
¡¡¡¡static¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Loading¡¡Candy¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Gum¡¡£û¡¡¡¡
¡¡¡¡static¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Loading¡¡Gum¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Cookie¡¡£û¡¡¡¡
¡¡¡¡static¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Loading¡¡Cookie¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡SweetShop¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨inside¡¡main¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Candy£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨After¡¡creating¡¡Candy¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡Class¡£forName£¨¡¨Gum¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡catch£¨ClassNotFoundException¡¡e£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡e¡£printStackTrace£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨After¡¡Class¡£forName£¨¡±Gum¡±£©¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Cookie£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨After¡¡creating¡¡Cookie¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
¶Ôÿ¸öÀàÀ´Ëµ£¨Candy£¬Gum¡¡ºÍCookie£©£¬ËüÃǶ¼ÓÐÒ»¸ö¡¡static´Ó¾ä£¬ÓÃÓÚÔÚÀàÊ×´ÎÔØÈëʱִÐС£ÏàÓ¦µÄÐÅ¡¡
Ï¢»á´òÓ¡³öÀ´£¬¸æËßÎÒÃÇÔØÈëÊÇʲôʱºò½øÐеġ£ÔÚmain£¨£©ÖУ¬¶ÔÏóµÄ´´½¨´úÂëλÓÚ´òÓ¡Óï¾äÖ®¼ä£¬ÒÔ±ãÕì¡¡
²âÔØÈëʱ¼ä¡£¡¡¡¡
ÌرðÓÐȤµÄÒ»ÐÐÊÇ£º¡¡¡¡
Class¡£forName£¨¡¨Gum¡¨£©£»¡¡¡¡
¸Ã·½·¨ÊÇClass¡¡£¨¼´È«²¿Class¡¡Ëù´ÓÊôµÄ£©µÄÒ»¸ö¡¡static³ÉÔ±¡£¶ø¡¡Class¡¡¶ÔÏóºÍÆäËûÈκζÔÏó¶¼ÊÇÀàËƵģ¬¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡335¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡337¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ËùÒÔÄܹ»»ñÈ¡ºÍ¿ØÖÆËüµÄÒ»¸ö¾ä±ú£¨×°ÔØÄ£¿é¾ÍÊǸÉÕâ¼þʵģ©¡£Îª»ñµÃ¡¡Class¡¡µÄÒ»¸ö¾ä±ú£¬Ò»¸ö°ì·¨ÊÇʹ¡¡
ÓÃforName£¨£©¡£ËüµÄ×÷ÓÃÊÇÈ¡µÃ°üº¬ÁËÄ¿±êÀàÎı¾Ãû×ÖµÄÒ»¸öString¡¡£¨×¢ÒâƴдºÍ´óСд£©¡£×îºó·µ»ØµÄÊÇ¡¡
Ò»¸öClass¡¡¾ä±ú¡£¡¡¡¡
¸Ã³ÌÐòÔÚij¸öJVM¡¡ÖеÄÊä³öÈçÏ£º¡¡¡¡
¡¡¡¡
inside¡¡main¡¡¡¡
Loading¡¡Candy¡¡¡¡
After¡¡creating¡¡Candy¡¡¡¡
Loading¡¡Gum¡¡¡¡
After¡¡Class¡£forName£¨¡¨Gum¡¨£©¡¡¡¡
Loading¡¡Cookie¡¡¡¡
After¡¡creating¡¡Cookie¡¡¡¡
¡¡¡¡
¿ÉÒÔ¿´µ½£¬Ã¿¸öClass¡¡Ö»ÓÐÔÚËüÐèÒªµÄʱºò²Å»áÔØÈ룬¶ø¡¡static¡¡³õʼ»¯¹¤×÷ÊÇÔÚÀàÔØÈëʱִÐеġ£¡¡¡¡
·Ç³£ÓÐȤµÄÊÇ£¬ÁíÒ»¸ö¡¡JVM¡¡µÄÊä³ö±ä³ÉÁËÁíÒ»¸öÑù×Ó£º¡¡¡¡
¡¡¡¡
Loading¡¡Candy¡¡¡¡
Loading¡¡Cookie¡¡¡¡
inside¡¡main¡¡¡¡
After¡¡creating¡¡Candy¡¡¡¡
Loading¡¡Gum¡¡¡¡
After¡¡Class¡£forName£¨¡¨Gum¡¨£©¡¡¡¡
After¡¡creating¡¡Cookie¡¡¡¡
¡¡¡¡
¿´À´JVM¡¡Í¨¹ý¼ì²émain£¨£©ÖеĴúÂ룬ÒѾԤ²âµ½Á˶ÔCandy¡¡ºÍCookie¡¡µÄÐèÒª£¬µ«È´¿´²»µ½Gum£¬ÒòΪËüÊÇͨ¡¡
¹ý¶ÔforName£¨£©µÄÒ»¸öµ÷Óô´½¨µÄ£¬¶ø²»ÊÇͨ¹ý¸üµäÐ͵Änew¡¡µ÷Ó᣾¡¹ÜÕâ¸öJVM¡¡Ò²´ïµ½ÁËÎÒÃÇÏ£ÍûµÄЧ¡¡
¹û£¬ÒòΪȷʵ»áÔÚÎÒÃÇÐèҪ֮ǰÔØÈëÄÇЩÀ࣬µ«È´²»Äܿ϶¨Õâ¶ùչʾµÄÐÐΪ°Ù·ÖÖ®°ÙÕýÈ·¡£¡¡¡¡
¡¡¡¡
1¡£¡¡Àà±ê¼Ç¡¡¡¡
ÔÚJava¡¡1¡£1¡¡ÖУ¬¿ÉÒÔ²ÉÓõڶþÖÖ·½Ê½À´²úÉúClass¡¡¶ÔÏóµÄ¾ä±ú£ºÊ¹Óá°Àà±ê¼Ç¡±¡£¶ÔÉÏÊö³ÌÐòÀ´Ëµ£¬¿´ÆðÀ´¡¡
¾ÍÏóÏÂÃæÕâÑù£º¡¡¡¡
Gum¡£class£»¡¡¡¡
ÕâÑù×ö²»½ö¸ü¼Ó¼òµ¥£¬¶øÇÒ¸ü°²È«£¬ÒòΪËü»áÔÚ±àÒëÆÚ¼äµÃµ½¼ì²é¡£ÓÉÓÚËüÈ¡ÏûÁ˶Է½·¨µ÷ÓõÄÐèÒª£¬ËùÒÔ¡¡
Ö´ÐеÄЧÂÊÒ²»á¸ü¸ß¡£¡¡¡¡
Àà±ê¼Ç²»½ö¿ÉÒÔÓ¦ÓÃÓÚÆÕͨÀ࣬Ҳ¿ÉÒÔÓ¦ÓÃÓÚ½Ó¿Ú¡¢Êý×éÒÔ¼°»ù±¾Êý¾ÝÀàÐÍ¡£³ý´ËÒÔÍ⣬Õë¶ÔÿÖÖ»ù±¾Êý¾Ý¡¡
ÀàÐ͵ķâ×°Æ÷À࣬Ëü»¹´æÔÚÒ»¸öÃûΪTYPE¡¡µÄ±ê×¼×ֶΡ£TYPE¡¡×ֶεÄ×÷ÓÃÊÇΪÏà¹ØµÄ»ù±¾Êý¾ÝÀàÐͲúÉú¡¡Class¡¡
¶ÔÏóµÄÒ»¸ö¾ä±ú£¬ÈçÏÂËùʾ£º¡¡¡¡
¡¡¡¡
¡£¡£¡£¡¡is¡¡equivalent¡¡to¡¡¡£¡£¡£¡¡¡¡
boolean¡£class¡¡Boolean¡£TYPE¡¡¡¡
char¡£class¡¡¡¡¡¡¡¡Character¡£TYPE¡¡¡¡
byte¡£class¡¡¡¡¡¡Byte¡£TYPE¡¡¡¡
short¡£class¡¡¡¡Short¡£TYPE¡¡¡¡
int¡£class¡¡¡¡¡¡¡¡¡¡Integer¡£TYPE¡¡¡¡
long¡£class¡¡¡¡¡¡¡¡Long¡£TYPE¡¡¡¡
float¡£class¡¡¡¡Float¡£TYPE¡¡¡¡
double¡£class¡¡Double¡£TYPE¡¡¡¡
void¡£class¡¡¡¡¡¡Void¡£TYPE¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡336¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡338¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
11¡£1¡£2¡¡ÔìÐÍÇ°µÄ¼ì²é¡¡¡¡
Æù½ñΪֹ£¬ÎÒÃÇÒÑÖªµÄ¡¡RTTI¡¡ÐÎʽ°üÀ¨£º¡¡¡¡
£¨1£©¡¡¾µäÔìÐÍ£¬È硨£¨Shape£©¡¨£¬ËüÓá¡RTTI¡¡È·±£ÔìÐ͵ÄÕýÈ·ÐÔ£¬²¢ÔÚÓöµ½Ò»¸öʧ°ÜµÄÔìÐͺó²úÉúÒ»¸ö¡¡
ClassCastException¡¡Î¥Àý¡£¡¡¡¡
£¨2£©¡¡´ú±í¶ÔÏóÀàÐ͵ÄClass¡¡¶ÔÏ󡣿ɲéѯClass¡¡¶ÔÏ󣬻ñÈ¡ÓÐÓõÄÔËÐÐÆÚ×ÊÁÏ¡£¡¡¡¡
¡¡¡¡
ÔÚC£«£«ÖУ¬¾µäµÄ¡¨£¨Shape£©¡¨ÔìÐͲ¢²»Ö´ÐÐRTTI¡¡¡£ËüÖ»ÊǼòµ¥µØ¸æËß±àÒëÆ÷½«¶ÔÏóµ±×÷ÐÂÀàÐÍ´¦Àí¡£¶øJava¡¡
ÒªÖ´ÐÐÀàÐͼì²é£¬Õâͨ³£½Ð×÷¡°ÀàÐÍ°²È«¡±µÄÏÂËÝÔìÐÍ¡£Ö®ËùÒԽС°ÏÂËÝÔìÐÍ¡±£¬ÊÇÓÉÓÚÀà·Ö²ã½á¹¹µÄÀúÊ·¡¡
ÅÅÁз½Ê½Ôì³ÉµÄ¡£Èô½«Ò»¸öCircle¡¡£¨Ô²£©ÔìÐ͵½Ò»¸öShape¡¡£¨¼¸ºÎÐÎ×´£©£¬¾Í½Ð×öÉÏËÝÔìÐÍ£¬ÒòΪÔ