ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ52²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡public¡¡String¡¡description£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡return¡¡¡¨Thermostat¡¡on¡¡day¡¡setting¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡//¡¡An¡¡example¡¡of¡¡an¡¡action£¨£©¡¡that¡¡inserts¡¡a¡¡¡¡¡¡
¡¡¡¡//¡¡new¡¡one¡¡of¡¡itself¡¡into¡¡the¡¡event¡¡list£º¡¡¡¡
¡¡¡¡private¡¡int¡¡rings£»¡¡¡¡
¡¡¡¡private¡¡class¡¡Bell¡¡extends¡¡Event¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡public¡¡Bell£¨long¡¡eventTime£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡super£¨eventTime£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡public¡¡void¡¡action£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Ring¡¡bell¡¡every¡¡2¡¡seconds£»¡¡rings¡¡times£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Bing£¡¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡if£¨¡¡rings¡¡¡·¡¡0£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡Bell£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡196¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡198¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£currentTimeMillis£¨£©¡¡£«¡¡2000£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡public¡¡String¡¡description£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡return¡¡¡¨Ring¡¡bell¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡private¡¡class¡¡Restart¡¡extends¡¡Event¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡public¡¡Restart£¨long¡¡eventTime£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡super£¨eventTime£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡public¡¡void¡¡action£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡long¡¡tm¡¡=¡¡System¡£currentTimeMillis£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Instead¡¡of¡¡hard¡wiring£»¡¡you¡¡could¡¡parse¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡configuration¡¡information¡¡from¡¡a¡¡text¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡file¡¡here£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡rings¡¡=¡¡5£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡ThermostatNight£¨tm£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡LightOn£¨tm¡¡£«¡¡1000£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡LightOff£¨tm¡¡£«¡¡2000£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡WaterOn£¨tm¡¡£«¡¡3000£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡WaterOff£¨tm¡¡£«¡¡8000£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡Bell£¨tm¡¡£«¡¡9000£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡ThermostatDay£¨tm¡¡£«¡¡10000£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡Can¡¡even¡¡add¡¡a¡¡Restart¡¡object£¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡addEvent£¨new¡¡Restart£¨tm¡¡£«¡¡20000£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡public¡¡String¡¡description£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡return¡¡¡¨Restarting¡¡system¡¨£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡GreenhouseControls¡¡gc¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡new¡¡GreenhouseControls£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡long¡¡tm¡¡=¡¡System¡£currentTimeMillis£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡gc¡£addEvent£¨gc¡£new¡¡Restart£¨tm£©£©£»¡¡¡¡
¡¡¡¡¡¡¡¡gc¡£run£¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
×¢Òâ¡¡light¡¡£¨µÆ¹â£©¡¢water¡¡£¨¹©Ë®£©¡¢thermostat¡¡£¨µ÷Σ©ÒÔ¼°rings¡¡¶¼Á¥ÊôÓÚÍⲿÀà¡¡
GreenhouseControls¡¡£¬ËùÒÔÄÚ²¿Àà¿ÉÒÔºÁÎÞ×谵طÃÎÊÄÇЩ×ֶΡ£´ËÍ⣬´ó¶àÊýaction£¨£©·½·¨Ò²Éæ¼°µ½Ä³Ð©¡¡
ÐÎʽµÄÓ²¼þ¿ØÖÆ£¬Õâͨ³£¶¼ÒªÇó·¢³ö¶Ô·Ç¡¡Java¡¡´úÂëµÄµ÷Óᣡ¡¡¡
´ó¶àÊýEvent¡¡Àà¿´ÆðÀ´¶¼ÊÇÏàËƵģ¬µ«¡¡Bell¡¡£¨Á壩ºÍRestart¡¡£¨ÖØÆô£©ÊôÓÚÌØÊâÇé¿ö¡£Bell¡¡»á·¢³öÏìÉù£¬Èô¡¡
ÉÐδÏìÁå×ã¹»µÄ´ÎÊý£¬Ëü»áÔÚʼþÁбíÀïÌí¼ÓÒ»¸öеÄBell¡¡¶ÔÏó£¬ËùÒÔÒÔºó»áÔÙ¶ÈÏìÁå¡£Çë×¢ÒâÄÚ²¿Àà¿´Æð¡¡
À´ÎªÊ²Ã´×ÜÊÇÀàËÆÓÚ¶àÖؼ̳УºBell¡¡ÓµÓÐEvent¡¡µÄËùÓз½·¨£¬¶øÇÒÒ²ÓµÓÐÍⲿÀàGreenhouseControls¡¡µÄËù¡¡
Óз½·¨¡£¡¡¡¡
Restart¡¡¸ºÔð¶Ôϵͳ½øÐгõʼ»¯£¬ËùÒÔ»áÌí¼ÓËùÓбØÒªµÄʼþ¡£µ±È»£¬Ò»ÖÖ¸üÁé»îµÄ×ö·¨ÊDZÜÃâ½øÐС°Ó²±à¡¡
Â롱£¬¶øÊÇ´ÓÒ»¸öÎļþÀï¶ÁÈëËüÃÇ£¨µÚ¡¡10ÕµÄÒ»¸öÁ·Ï°»áÒªÇó´ó¼ÒÐÞ¸ÄÕâ¸öÀý×Ó£¬´Ó¶ø´ïµ½Õâ¸öÄ¿±ê£©¡£ÓÉ¡¡
ÓÚRestart£¨£©½ö½öÊÇÁíÒ»¸ö¡¡Event¡¡¶ÔÏó£¬ËùÒÔÒ²¿ÉÒÔÔÚRestart¡£action£¨£©ÀïÌí¼ÓÒ»¸ö¡¡Restart¡¡¶ÔÏó£¬Ê¹ÏµÍ³¡¡
Äܹ»¶¨ÆÚÖØÆô¡£ÔÚmain£¨£©ÖУ¬ÎÒÃÇÐèÒª×öµÄÈ«²¿ÊÂÇé¾ÍÊÇ´´½¨Ò»¸ö¡¡GreenhouseControls¡¡¶ÔÏ󣬲¢Ìí¼ÓÒ»¸ö¡¡
Restart¡¡¶ÔÏó£¬ÁîÆ乤×÷ÆðÀ´¡£¡¡¡¡
Õâ¸öÀý×ÓÓ¦¸Ãʹ´ó¼Ò¶ÔÄÚ²¿ÀàµÄ¼ÛÖµÓÐÒ»¸ö¸ü¼ÓÉî¿ÌµÄÈÏʶ£¬ÌرðÊÇÔÚÒ»¸ö¿ØÖÆ¿ò¼ÜÀïʹÓÃËüÃǵÄʱºò¡£´Ë¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡197¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡199¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Í⣬ÔÚµÚ¡¡13¡¡Õµĺó°ë²¿·Ö£¬´ó¼Ò»¹»á¿´µ½ÈçºÎÇÉÃîµØÀûÓÃÄÚ²¿ÀàÃèÊöÒ»¸öͼÐÎÓû§½çÃæµÄÐÐΪ¡£Íê³ÉÄÇÀïµÄ¡¡
ѧϰºó£¬¶ÔÄÚ²¿ÀàµÄÈÏʶ½«ÉÏÉýµ½Ò»¸öÇ°ËùδÓеÄи߶ȡ£¡¡¡¡
7¡£7¡¡¹¹½¨Æ÷ºÍ¶àÐÎÐÔ¡¡¡¡
ͬÍù³£Ò»Ñù£¬¹¹½¨Æ÷ÓëÆäËûÖÖÀàµÄ·½·¨ÊÇÓÐÇø±ðµÄ¡£ÔÚÉæ¼°µ½¶àÐÎÐÔµÄÎÊÌâºó£¬ÕâÖÖ·½·¨ÒÀÈ»³ÉÁ¢¡£¾¡¹Ü¹¹¡¡
½¨Æ÷²¢²»¾ßÓжàÐÎÐÔ£¨¼´±ã¿ÉÒÔʹÓÃÒ»ÖÖ¡°ÐéÄâ¹¹½¨Æ÷¡±¡ª¡ª½«ÔÚµÚ¡¡11¡¡Õ½éÉÜ£©£¬µ«ÈÔÈ»·Ç³£ÓбØÒªÀí½â¹¹¡¡
½¨Æ÷ÈçºÎÔÚ¸´Ôӵķּ¶½á¹¹ÖÐÒÔ¼°Ëæͬ¶àÐÎÐÔʹÓá£ÕâÒ»Àí½â½«ÓÐÖúÓÚ´ó¼Ò±ÜÃâÏÝÈëһЩÁîÈ˲»¿ìµÄ¾À·×¡£¡¡¡¡
7¡£7¡£1¡¡¡¡¹¹½¨Æ÷µÄµ÷ÓÃ˳Ðò¡¡¡¡
¹¹½¨Æ÷µ÷ÓõÄ˳ÐòÒÑÔÚµÚ4¡¡Õ½øÐÐÁ˼òҪ˵Ã÷£¬µ«ÄÇÊÇÔڼ̳кͶàÐÎÐÔÎÊÌâÒýÈë֮ǰ˵µÄ»°¡£¡¡¡¡
ÓÃÓÚ»ù´¡ÀàµÄ¹¹½¨Æ÷¿Ï¶¨ÔÚÒ»¸öÑÜÉúÀàµÄ¹¹½¨Æ÷Öе÷Ó㬶øÇÒÖð½¥ÏòÉÏÁ´½Ó£¬Ê¹Ã¿¸ö»ù´¡ÀàʹÓõĹ¹½¨Æ÷¶¼¡¡
Äܵõ½µ÷Óá£Ö®ËùÒÔÒªÕâÑù×ö£¬ÊÇÓÉÓÚ¹¹½¨Æ÷¸ºÓÐÒ»ÏîÌØÊâÈÎÎñ£º¼ì²é¶ÔÏóÊÇ·ñµÃµ½ÁËÕýÈ·µÄ¹¹½¨¡£Ò»¸öÑÜ¡¡
ÉúÀàÖ»ÄÜ·ÃÎÊËü×Ô¼ºµÄ³ÉÔ±£¬²»ÄÜ·ÃÎÊ»ù´¡ÀàµÄ³ÉÔ±£¨ÕâЩ³ÉԱͨ³£¶¼¾ßÓÐprivate¡¡ÊôÐÔ£©¡£Ö»Óлù´¡ÀàµÄ¡¡
¹¹½¨Æ÷ÔÚ³õʼ»¯×Ô¼ºµÄÔªËØʱ²ÅÖªµÀÕýÈ·µÄ·½·¨ÒÔ¼°ÓµÓÐÊʵ±µÄȨÏÞ¡£ËùÒÔ£¬±ØÐëÁîËùÓй¹½¨Æ÷¶¼µÃµ½µ÷¡¡
Ó㬷ñÔòÕû¸ö¶ÔÏóµÄ¹¹½¨¾Í¿ÉÄܲ»ÕýÈ·¡£ÄÇÕýÊDZàÒëÆ÷ΪʲôҪǿÆȶÔÑÜÉúÀàµÄÿ¸ö²¿·Ö½øÐй¹½¨Æ÷µ÷Óõġ¡
ÔÒò¡£ÔÚÑÜÉúÀàµÄ¹¹½¨Æ÷Ö÷ÌåÖУ¬ÈôÎÒÃÇûÓÐÃ÷È·Ö¸¶¨¶ÔÒ»¸ö»ù´¡À๹½¨Æ÷µÄµ÷Óã¬Ëü¾Í»á¡°Ä¬Ä¬¡±µØµ÷Óá¡
ĬÈϹ¹½¨Æ÷¡£Èç¹û²»´æÔÚĬÈϹ¹½¨Æ÷£¬±àÒëÆ÷¾Í»á±¨¸æÒ»¸ö´íÎó£¨Èôij¸öÀàûÓй¹½¨Æ÷£¬±àÒëÆ÷»á×Ô¶¯×éÖ¯¡¡
Ò»¸öĬÈϹ¹½¨Æ÷£©¡£¡¡¡¡
ÏÂÃæÈÃÎÒÃÇ¿´¿´Ò»¸öÀý×Ó£¬ËüչʾÁË°´¹¹½¨Ë³Ðò½øÐкϳɡ¢¼Ì³ÐÒÔ¼°¶àÐÎÐÔµÄЧ¹û£º¡¡¡¡
¡¡¡¡
//£º¡¡Sandwich¡£java¡¡¡¡
//¡¡Order¡¡of¡¡constructor¡¡calls¡¡¡¡
¡¡¡¡
class¡¡Meal¡¡£û¡¡¡¡
¡¡¡¡Meal£¨£©¡¡£û¡¡System¡£out¡£println£¨¡¨Meal£¨£©¡¨£©£»¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Bread¡¡£û¡¡¡¡
¡¡¡¡Bread£¨£©¡¡£û¡¡System¡£out¡£println£¨¡¨Bread£¨£©¡¨£©£»¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Cheese¡¡£û¡¡¡¡
¡¡¡¡Cheese£¨£©¡¡£û¡¡System¡£out¡£println£¨¡¨Cheese£¨£©¡¨£©£»¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Lettuce¡¡£û¡¡¡¡
¡¡¡¡Lettuce£¨£©¡¡£û¡¡System¡£out¡£println£¨¡¨Lettuce£¨£©¡¨£©£»¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Lunch¡¡extends¡¡Meal¡¡£û¡¡¡¡
¡¡¡¡Lunch£¨£©¡¡£û¡¡System¡£out¡£println£¨¡¨Lunch£¨£©¡¨£©£»£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡PortableLunch¡¡extends¡¡Lunch¡¡£û¡¡¡¡
¡¡¡¡PortableLunch£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨PortableLunch£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Sandwich¡¡extends¡¡PortableLunch¡¡£û¡¡¡¡
¡¡¡¡Bread¡¡b¡¡=¡¡new¡¡Bread£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡198¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡200¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡Cheese¡¡c¡¡=¡¡new¡¡Cheese£¨£©£»¡¡¡¡
¡¡¡¡Lettuce¡¡l¡¡=¡¡new¡¡Lettuce£¨£©£»¡¡¡¡
¡¡¡¡Sandwich£¨£©¡¡£û¡¡¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Sandwich£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Sandwich£¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
Õâ¸öÀý×ÓÔÚÆäËûÀàµÄÍⲿ´´½¨ÁËÒ»¸ö¸´ÔÓµÄÀ࣬¶øÇÒÿ¸öÀ඼ÓÐÒ»¸ö¹¹½¨Æ÷¶Ô×Ô¼º½øÐÐÁËÐû²¼¡£ÆäÖÐ×îÖØÒª¡¡
µÄÀàÊÇSandwich¡¡£¬Ëü·´Ó³³öÁËÈý¸ö¼¶±ðµÄ¼Ì³Ð£¨Èô½«´ÓObject¡¡µÄĬÈϼ̳ÐËãÔÚÄÚ£¬¾ÍÊÇËļ¶£©ÒÔ¼°Èý¸ö³É¡¡
Ô±¶ÔÏó¡£ÔÚ¡¡main£¨£©Àï´´½¨ÁËÒ»¸ö¡¡Sandwich¡¡¶ÔÏóºó£¬Êä³ö½á¹ûÈçÏ£º¡¡¡¡
¡¡¡¡
Meal£¨£©¡¡¡¡
Lunch£¨£©¡¡¡¡
PortableLunch£¨£©¡¡¡¡
Bread£¨£©¡¡¡¡
Cheese£¨£©¡¡¡¡
Lettuce£¨£©¡¡¡¡
Sandwich£¨£©¡¡¡¡
¡¡¡¡
ÕâÒâζ×ŶÔÓÚÒ»¸ö¸´ÔӵĶÔÏ󣬹¹½¨Æ÷µÄµ÷ÓÃ×ñÕÕÏÂÃæµÄ˳Ðò£º¡¡¡¡
£¨1£©¡¡µ÷Óûù´¡À๹½¨Æ÷¡£Õâ¸ö²½Öè»á²»¶ÏÖظ´ÏÂÈ¥£¬Ê×Ïȵõ½¹¹½¨µÄÊÇ·Ö¼¶½á¹¹µÄ¸ù²¿£¬È»ºóÊÇÏÂÒ»¸öÑÜÉú¡¡
À࣬µÈµÈ¡£Ö±µ½µÖ´ï×îÉîÒ»²ãµÄÑÜÉúÀà¡£¡¡¡¡
£¨2£©¡¡°´ÉùÃ÷˳Ðòµ÷ÓóÉÔ±³õʼ»¯Ä£¿é¡£¡¡¡¡
£¨3£©¡¡µ÷ÓÃÑÜÉú¹¹½¨Æ÷µÄÖ÷Ìå¡£¡¡¡¡
¡¡¡¡
¹¹½¨Æ÷µ÷ÓõÄ˳ÐòÊǷdz£ÖØÒªµÄ¡£½øÐм̳Ðʱ£¬ÎÒÃÇÖªµÀ¹ØÓÚ»ù´¡ÀàµÄÒ»ÇУ¬²¢ÇÒÄÜ·ÃÎÊ»ù´¡ÀàµÄÈκΡ¡
public¡¡ºÍ¡¡protected¡¡³ÉÔ±¡£ÕâÒâζ×ŵ±ÎÒÃÇÔÚÑÜÉúÀàµÄʱºò£¬±ØÐëÄܼٶ¨»ù´¡ÀàµÄËùÓгÉÔ±¶¼ÊÇÓÐЧµÄ¡£²É¡¡
ÓÃÒ»ÖÖ±ê×¼·½·¨£¬¹¹½¨Ðж¯ÒѾ½øÐУ¬ËùÒÔ¶ÔÏóËùÓв¿·ÖµÄ³ÉÔ±¾ùÒѵõ½¹¹½¨¡£µ«ÔÚ¹¹½¨Æ÷ÄÚ²¿£¬±ØÐë±£Ö¤¡¡
ʹÓõÄËùÓгÉÔ±¶¼Òѹ¹½¨¡£Îª´ïµ½Õâ¸öÒªÇó£¬Î¨Ò»µÄ°ì·¨¾ÍÊÇÊ×Ïȵ÷Óûù´¡À๹½¨Æ÷¡£È»ºóÔÚ½øÈëÑÜÉúÀ๹¡¡
½¨Æ÷ÒÔºó£¬ÎÒÃÇÔÚ»ù´¡ÀàÄܹ»·ÃÎʵÄËùÓгÉÔ±¶¼Òѵõ½³õʼ»¯¡£´ËÍ⣬ËùÓгÉÔ±¶ÔÏó£¨Ò༴ͨ¹ýºÏ³É·½·¨Öá¡
ÓÚÀàÄڵĶÔÏó£©ÔÚÀàÄÚ½øÐж¨ÒåµÄʱºò£¨±ÈÈçÉÏÀýÖеÄb£¬c¡¡ºÍ¡¡l£©£¬ÓÉÓÚÎÒÃÇÓ¦¾¡¿ÉÄܵضÔËüÃǽøÐгõʼ¡¡
»¯£¬ËùÒÔÒ²Ó¦±£Ö¤¹¹½¨Æ÷ÄÚ²¿µÄËùÓгÉÔ±¾ùΪÓÐЧ¡£Èô¼á³Ö°´ÕâÒ»¹æÔòÐÐÊ£¬»áÓÐÖúÓÚÎÒÃÇÈ·¶¨ËùÓлù´¡Àà¡¡
³ÉÔ±ÒÔ¼°µ±Ç°¶ÔÏóµÄ³ÉÔ±¶ÔÏó¾ùÒÑ»ñµÃÕýÈ·µÄ³õʼ»¯¡£µ«²»ÐÒµÄÊÇ£¬ÕâÖÖ×ö·¨²¢²»ÊÊÓÃÓÚËùÓÐÇé¿ö£¬Õ⽫ÔÚ¡¡
ÏÂÒ»½Ú¾ßÌå˵Ã÷¡£¡¡¡¡
7¡£7¡£2¡¡¡¡¼Ì³ÐºÍ¡¡finalize£¨£©¡¡¡¡¡¡
ͨ¹ý¡°ºÏ³É¡±·½·¨´´½¨ÐÂÀàʱ£¬ÓÀÔ¶²»±Øµ£ÐĶÔÄǸöÀàµÄ³ÉÔ±¶ÔÏóµÄÊÕβ¹¤×÷¡£Ã¿¸ö³ÉÔ±¶¼ÊÇÒ»¸ö¶ÀÁ¢µÄ¶Ô¡¡
Ïó£¬ËùÒÔ»áµÃµ½Õý³£µÄÀ¬»øÊÕ¼¯ÒÔ¼°ÊÕβ´¦Àí¡ª¡ªÎÞÂÛËüÊDz»ÊDz»×Ô¼ºÄ³¸öÀàÒ»¸ö³ÉÔ±¡£µ«ÔÚ½øÐгõʼ»¯µÄ¡¡
ʱºò£¬±ØÐ븲¸ÇÑÜÉúÀàÖеÄfinalize£¨£©·½·¨¡ª¡ªÈç¹ûÒѾÉè¼ÆÁËij¸öÌØÊâµÄÇå³ý½ø³Ì£¬ÒªÇóËü±ØÐë×÷ΪÀ¬»ø¡¡
ÊÕ¼¯µÄÒ»²¿·Ö½øÐС£¸²¸ÇÑÜÉúÀàµÄ¡¡finalize£¨£©Ê±£¬Îñ±Ø¼Çסµ÷Óá¡finalize£¨£©µÄ»ù´¡Àà°æ±¾¡£·ñÔò£¬»ù´¡ÀàµÄ¡¡
³õʼ»¯¸ù±¾²»»á·¢Éú¡£ÏÂÃæÕâ¸öÀý×Ó±ãÊÇÃ÷Ö¤£º¡¡¡¡
¡¡¡¡
//£º¡¡Frog¡£java¡¡¡¡
//¡¡Testing¡¡finalize¡¡with¡¡inheritance¡¡¡¡
¡¡¡¡
class¡¡DoBaseFinalization¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡boolean¡¡flag¡¡=¡¡false£»¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡199¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡201¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
class¡¡Characteristic¡¡£û¡¡¡¡
¡¡¡¡String¡¡s£»¡¡¡¡
¡¡¡¡Characteristic£¨String¡¡c£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡s¡¡=¡¡c£»¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨Creating¡¡Characteristic¡¡¡¨¡¡£«¡¡s£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡protected¡¡void¡¡finalize£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨finalizing¡¡Characteristic¡¡¡¨¡¡£«¡¡s£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡LivingCreature¡¡£û¡¡¡¡
¡¡¡¡Characteristic¡¡p¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Characteristic£¨¡¨is¡¡alive¡¨£©£»¡¡¡¡
¡¡¡¡LivingCreature£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨LivingCreature£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡protected¡¡void¡¡finalize£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨LivingCreature¡¡finalize¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡Call¡¡base¡class¡¡version¡¡LAST£¡¡¡¡¡
¡¡¡¡¡¡¡¡if£¨DoBaseFinalization¡£flag£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡super¡£finalize£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡catch£¨Throwable¡¡t£©¡¡£û£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Animal¡¡extends¡¡LivingCreature¡¡£û¡¡¡¡
¡¡¡¡Characteristic¡¡p¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Characteristic£¨¡¨has¡¡heart¡¨£©£»¡¡¡¡
¡¡¡¡Animal£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Animal£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡protected¡¡void¡¡finalize£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Animal¡¡finalize¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨DoBaseFinalization¡£flag£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡super¡£finalize£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡catch£¨Throwable¡¡t£©¡¡£û£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
class¡¡Amphibian¡¡extends¡¡Animal¡¡£û¡¡¡¡
¡¡¡¡Characteristic¡¡p¡¡=¡¡¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Characteristic£¨¡¨can¡¡live¡¡in¡¡water¡¨£©£»¡¡¡¡
¡¡¡¡Amphibian£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Amphibian£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡protected¡¡void¡¡finalize£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡200¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡202¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Amphibian¡¡finalize¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨DoBaseFinalization¡£flag£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡super¡£finalize£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡catch£¨Throwable¡¡t£©¡¡£û£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡Frog¡¡extends¡¡Amphibian¡¡£û¡¡¡¡
¡¡¡¡Frog£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Frog£¨£©¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡protected¡¡void¡¡finalize£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Frog¡¡finalize¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨DoBaseFinalization¡£flag£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡super¡£finalize£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡catch£¨Throwable¡¡t£©¡¡£û£ý¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡if£¨args¡£length¡¡£¡=¡¡0¡¡&&¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡args£§0£§¡£equals£¨¡¨finalize¡¨£©£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡DoBaseFinalization¡£flag¡¡=¡¡true£»¡¡¡¡
¡¡¡¡¡¡¡¡else¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨not¡¡finalizing¡¡bases¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡new¡¡Frog£¨£©£»¡¡//¡¡Instantly¡¡bees¡¡garbage¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨bye£¡¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡Must¡¡do¡¡this¡¡to¡¡guarantee¡¡that¡¡all¡¡¡¡¡¡
¡¡¡¡¡¡¡¡//¡¡finalizers¡¡will¡¡be¡¡called£º¡¡¡¡
¡¡¡¡¡¡¡¡System¡£runFinalizersOnExit£¨true£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
DoBasefinalization¡¡ÀàÖ»ÊǼòµ¥µØÈÝÄÉÁËÒ»¸ö±êÖ¾£¬Ïò·Ö¼¶½á¹¹ÖеÄÿ¸öÀàÖ¸³öÊÇ·ñÓ¦µ÷Óá¡
super¡£finalize£¨£©¡£Õâ¸ö±êÖ¾µÄÉèÖý¨Á¢ÔÚÃüÁîÐвÎÊýµÄ»ù´¡ÉÏ£¬ËùÒÔÄܹ»ÔÚ½øÐкͲ»½øÐлù´¡ÀàÊÕβ¹¤×÷¡¡
µÄÇ°Ìáϲ鿴ÐÐΪ¡£¡¡¡¡
·Ö¼¶½á¹¹ÖеÄÿ¸öÀàÒ²°üº¬ÁË¡¡Characteristic¡¡ÀàµÄÒ»¸ö³ÉÔ±¶ÔÏó¡£´ó¼Ò¿ÉÒÔ¿´µ½£¬ÎÞÂÛÊÇ·ñµ÷ÓÃÁË»ù´¡ÀàÊÕ¡¡
βģ¿é£¬Characteristic¡¡³ÉÔ±¶ÔÏ󶼿϶¨»áµÃµ½ÊÕ⣨Çå³ý£©´¦Àí¡£¡¡¡¡
ÿ¸ö±»¸²¸ÇµÄfinalize£¨£©ÖÁÉÙÒªÓµÓжԡ¡protected¡¡³ÉÔ±µÄ·ÃÎÊȨÁ¦£¬ÒòΪ¡¡Object¡¡ÀàÖеÄfinalize£¨£©·½·¨¾ß¡¡
ÓÐprotected¡¡ÊôÐÔ£¬¶ø±àÒëÆ÷²»ÔÊÐíÎÒÃÇÔڼ̳йý³ÌÖÐÏû³ý·ÃÎÊȨÏÞ£¨¡°ÓѺõġ±±È¡°Êܵ½±£»¤µÄ¡±¾ßÓиü¡¡
СµÄ·ÃÎÊȨÏÞ£©¡£¡¡¡¡
ÔÚFrog¡£main£¨£©ÖУ¬DoBaseFinalization¡¡±êÖ¾»áµÃµ½ÅäÖ㬶øÇһᴴ½¨µ¥¶ÀÒ»¸öFrog¡¡¶ÔÏó¡£Çë¼ÇסÀ¬»øÊÕ¼¯¡¡
¡¡£¨ÌرðÊÇÊÕβ¹¤×÷£©¿ÉÄܲ»»áÕë¶ÔÈκÎÌض¨µÄ¶ÔÏó·¢Éú£¬ËùÒÔΪÁËÇ¿Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡