¡¡¡¡Êä³ö½á¹û
SuperClass static SubClass static super initialization variable new SuperClass |
¡¡¡¡½âÊÍһϣº
¡¡¡¡1£© JavaÐéÄâ»úÒªÖ´ÐÐInitializationOrderÀàÖеÄstatic ·½·¨main£¨£©£¬ÕâÒýÆðÁËÀàµÄ³õʼ»¯¡£¿ªÊ¼³õʼ»¯InitializationOrderÀà¡£¾ßÌåµÄ²½ÖèÂÔÈ¥²»Ëµ¡£
¡¡¡¡2£© InitializationOrderÀà³õʼ»¯Íê±Ïºó£¬¿ªÊ¼Ö´ÐÐmain£¨£©·½·¨¡£Óï¾äSubClass sb = new SubClass£¨£©½«´´½¨Ò»¸öSubClass¶ÔÏó¡£¼ÓÔØÀàSubClassºó¶ÔÆä½øÐÐÀà³õʼ»¯£¬ÒòΪSubclassÓÐÒ»¸ö¸¸ÀàSuperClass£¬ËùÒÔÏȳõʼ»¯SuperClassÀà¡£ÓÚÊÇ¿´µ½Êä³ö¡°SuperClass static¡±¡£
¡¡¡¡3£© SuperClassÀà³õʼ»¯Íê±Ïºó£¬¿ªÊ¼³õʼ»¯SubClassÀ࣬Êä³ö¡°SubClass static¡±¡£
¡¡¡¡4£© ÖÁ´Ë£¬ÀàµÄ¼ÓÔع¤×÷È«²¿Íê³É¡£¿ªÊ¼½øÈë´´½¨SubClassµÄ¶ÔÏó¹ý³Ì¡£ÏÈΪSubClassÀàºÍÆ丸ÀàSuperClassÀà·ÖÅäÄÚ´æ¿Õ¼ä£¬ÕâʱSuper su ±»¸³ÖµÎªnull¡£
¡¡¡¡5£© Ö´Ðй¹Ô캯ÊýSubClass£¨£©£¬Ö´ÐÐsuper£¨£©£¬ µ÷Óø¸ÀàµÄ¹¹Ô캯Êý£¬Êä³ö¡°super¡±¡£
¡¡¡¡6£© ³õʼ»¯SubClassÀàµÄ³ÉÔ±±äÁ¿su£¬Êä³ö¡°initialization variable¡±¡£
¡¡¡¡7£© ¼ÌÐøÖ´Ðй¹Ô캯ÊýµÄÊ£Óಿ·Ö£¬Ö´ÐÐnew SuperClass£¨¡°new SuperClass¡±£©£¬Êä³ö¡°new SuperClass¡±£¬ÕâʱSuper su ±»¸³ÖµÐ½¨¶ÔÏóµÄÒýÓá£
¡¡¡¡8£© ¶øSubClassËäȻʵÏÖÁ˽ӿÚInterface£¬µ«Êdzõʼ»¯ËüµÄʱºò²¢²»»áÒýÆð½Ó¿ÚµÄ³õʼ»¯£¬ËùÒÔ½Ó¿ÚInterfaceÖеÄstatic SuperClass su = new SuperClass£¨¡°Interface new SuperClass¡±£©×ÔʼÖÁÖÕ¶¼Ã»Óб»Ö´Ðе½¡£
¡¡¡¡ËùÒÔ¶ÔÏóµÄ´´½¨£¬¾ßÌå²½ÖèÈçÏ£º
¡¡¡¡£¨1£© ËùÓеijÉÔ±±äÁ¿¡ª°üÀ¨¸ÃÀ࣬¼°ËüµÄ¸¸ÀàÖеijÉÔ±±äÁ¿--±»·ÖÅäÄÚ´æ¿Õ¼ä£¬²¢¸³ÓèĬÈÏÖµ¡££¨ÕâÀïÊǵÚÒ»´Î³õʼ»¯³ÉÔ±±äÁ¿£©
¡¡¡¡£¨2£© ΪËùµ÷ÓõĹ¹Ô캯Êý³õʼ»¯Æä²ÎÊý±äÁ¿¡££¨Èç¹ûÓвÎÊý£©
¡¡¡¡£¨3£© Èç¹ûÔÚ¹¹Ô캯ÊýÖÐÓÃthis µ÷ÓÃÁËͬÀàÖеÄÆäËû¹¹Ô캯Êý£¬Ôò°´ÕÕ²½Ö裨2£©~£¨6£©È¥´¦Àí±»µ÷Óõ½µÄ¹¹Ô캯Êý¡£
¡¡¡¡£¨4£© Èç¹ûÔÚ¹¹Ô캯ÊýÖÐÓÃsuperµ÷ÓÃÁËÆ丸ÀàµÄ¹¹Ô캯Êý£¬Ôò°´ÕÕ²½Ö裨2£©~£¨6£©È¥´¦Àí±»µ÷Óõ½µÄ¸¸À๹Ô캯Êý¡£
¡¡¡¡£¨5£© °´ÕÕÊéд˳Ðò£¬Ö´ÐÐinstance initializer ºÍ instance variable initializerÀ´³õʼ»¯³ÉÔ±±äÁ¿¡££¨ÕâÀïÊǵڶþ´Î³õʼ»¯³ÉÔ±±äÁ¿£©
¡¡¡¡£¨6£© °´ÕÕÊéд˳Ðò£¬Ö´Ðй¹Ô캯ÊýµÄÆäÓಿ·Ö¡£
¡¡¡¡*******************
¡¡¡¡×ܽ᣺
¡¡¡¡´ÓÀàµÄ³õʼ»¯ºÍ¶ÔÏóµÄ´´½¨²½Ö裬¿ÉÒÔÖªµÀ£¬Ò»¸öÀàÊÇÏȳõʼ»¯staticµÄ±äÁ¿ºÍstatic¾ä¿é£¬È»ºóÔÚ·ÖÅä¸ÃÀàÒÔ¼°¸¸ÀàµÄ³ÉÔ±±äÁ¿µÄÄÚ´æ¿Õ¼ä£¬¸³ÓèĬÈÏÖµ£¬È»ºó¿ªÊ¼µ÷Óù¹Ô캯Êý¡£¶ø×ÓÀàºÍ¸¸ÀàÖ®¼ä£¬ÔòÏȳõʼ»¯ºÍ´´½¨¸¸À࣬ȻºóÔÚ³õʼ»¯ºÍ´´½¨×ÓÀàµÄ¡£