Á¦ÀÛ : À±°æ±¸
Á¦ÀÛÀÏ : 1997. 5. 22
ÃÖÁ¾ °»½ÅÀÏ : 1999. 12. 10
ÁÖ¿ä °Ë»ö¾î : ³»ºÎ Ŭ·¡½º, À̺¥Æ® ¾î´ðÅÍ Å¬·¡½º
ÇÊÀÚÀÇ µ¿ÀÇ ¾øÀÌ º¹Á¦ ¹× ¹«´Ü ÀüÁ¦ÇÒ ¼ö ¾ø½À´Ï´Ù. Copyright (c) 1997 Yoon Kyung Koo(yoonforh@yahoo.com), All rights reserved.
ÀÚ¹Ù 1.1¿¡¼ ´Þ¶óÁø ¹®¹ý »çÇ× Áß °¡Àå µÎµå·¯Áø °ÍÀº ¹Ù·Î ³»ºÎ Ŭ·¡½º¶ó´Â
°³³äÀÌ´Ù.
³»ºÎ Ŭ·¡½º ¿Ü¿¡´Â ¹®¹ýÀûÀ¸·Î Å©°Ô ´Þ¶óÁø ³»¿ëÀ» ã±â´Â ¾î·Æ´Ù.
³»ºÎ Ŭ·¡½ºÀÇ Á¤È®ÇÑ °³³äÀ» °®ÃßÁö ¸øÇÏ¸é ºó¹øÇÏ°Ô »ç¿ëµÇ´Â ÀÌ °³³ä¿¡ ´çȲÇÏ°Ô
µÇ°í ¶Ç ¼Ò½º Çص¶¿¡ È¥¶õÀ» ´À³¢°Ô µÈ´Ù.
ÀÚ¹Ù 1.0¿¡¼´Â ¸ðµç Ŭ·¡½º´Â ¾î¶² ÆÐÅ°Áö¿¡ Æ÷ÇԵǴ Ŭ·¡½º¿´´Ù.
Áï, ÇöÀç ¼Ò½º ÆÄÀÏ¿¡ ¸ðµç Ŭ·¡½º°¡ Æ÷ÇԵǾî ÆÐÅ°Áö À̸§ÀÌ »ý·«µÇ´Â ±âº»
ÆÐÅ°ÁöÀÇ Å¬·¡½º¶ó ÇÏ´õ¶óµµ ¸ðµç Ŭ·¡½º´Â ÆÐÅ°Áö¿¡ ¼ÓÇϵµ·Ï µÇ¾î ÀÖ¾ú´Ù.
Ŭ·¡½º °£ÀÇ Á¢±Ù ±ÇÇÑ¿¡¼µµ Ŭ·¡½º °£ÀÇ »ó¼Ó ±¸Á¶(ÇÏÀ§ Ŭ·¡½ºÀÌ³Ä ¾Æ´Ï³Ä)¿Í
°°Àº ÆÐÅ°ÁöÀÌ³Ä ¾Æ´Ï³Ä ÇÏ´Â ¹®Á¦°¡ Á¢±Ù ±ÇÇÑÀ» ³ª´©´Â µÎ °¡Áö ±âÁØÀÌ µÊÀ»
»ó±âÇغ¸¶ó.
ÀÌ·¯ÇÑ Å¬·¡½º¸¦ Top Level Ŭ·¡½º¶ó°í ºÎ¸£ÀÚ. ¿©±â¼ Top LevelÀº Ŭ·¡½º
»ó¼Ó ±¸Á¶ÀÇ ¼öÁØ°ú´Â ¹«°üÇÏ´Ù.
³»ºÎ Ŭ·¡½º´Â Á» Ưº°ÇÑ Á¸ÀçÀÌ´Ù.
À̸§Àº Ŭ·¡½º ³»ºÎ¿¡ Á¸ÀçÇÏ´Â(nested) Ŭ·¡½º¶ó´Â ¶æÀ» °¡Áø´Ù. Áï, ÀÚ¹Ù
1.0ÀÇ Å¬·¡½º ³»ºÎ¿¡ ¸î °¡Áö ÇüÅ·ΠŬ·¡½º¸¦ ¶Ç Á¤ÀÇÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.
Á»´õ Á¤È®ÇÏ°Ô Ç¥ÇöÇÏÀÚ¸é ÀÌ ³»ºÎ Ŭ·¡½ºµµ µÎ °¡Áö Á¾·ù°¡ ÀÖ´Ù. ÁøÁ¤ÇÑ
ÀǹÌÀÇ ³»ºÎ(inner) Ŭ·¡½º°¡ ÀÖ°í nested top level Ŭ·¡½º°¡ ÀÖ´Ù.
nested top level Ŭ·¡½º´Â ºñ·Ï Ŭ·¡½º ³»ºÎ¿¡ Á¸ÀçÇϱä ÇÏÁö¸¸ static ¸â¹ö·Î
¼±¾ðµÇ´Â Ŭ·¡½º·Î À̵éÀº ºñ·Ï ÆÐÅ°ÁöÀÇ ¸â¹ö´Â ¾Æ´ÏÁö¸¸ ¿ÜºÎ¿¡¼ ÀڽŸ¸ÀÇ
ÀνºÅϽº¸¦ ¸¸µé ¼ö ÀÖ´Ù´Â Á¡¿¡¼ top level Ŭ·¡½º·Î ºÐ·ùµÈ´Ù.
ÇÊÀÚ´Â ÀڽŸ¸ÀÇ ÀνºÅϽº¸¦ ¸¸µé ¼ö ÀÖ´Â netsted top level class¸¦ Æ÷ÇÔÇÑ ¸ðµç nested class¸¦ ¾È±ä Ŭ·¡½º, ±×·¸Áö ¸øÇÑ Å¬·¡½º(inner class)¸¦ ³»ºÎ Ŭ·¡½º·Î ¹ø¿ªÇÏ´Ï ¿ÀÇØ ¾ø±æ ¹Ù¶õ´Ù.
¾È±ä Ŭ·¡½º ---+--- Åé·¹º§ ¾È±ä Ŭ·¡½º (staticÀ¸·Î ¼±¾ðµÈ ¸â¹ö Ŭ·¡½º) | +--- ³»ºÎ Ŭ·¡½º (½º½º·Î´Â ÀνºÅϽºÈµÇÁö ¸øÇÑ´Ù)
³»ºÎ Ŭ·¡½º¸¦ Æ÷ÇÔÇÑ ÀÌµé ¾È±ä Ŭ·¡½º´Â ÄÄÆÄÀÏ·¯°¡ º°µµÀÇ Å¬·¡½º·Î ºÐ¸®ÇÏ¿© ÄÄÆÄÀÏÇϱ⠶§¹®¿¡ (Áï, ¾È±ä Ŭ·¡½º´Â ÀÚ¹Ù °¡»ó ±â°è¿¡¼ ±¸ÇöµÇ´Â °ÍÀÌ ¾Æ´Ï´Ù) ³»ºÎ Ŭ·¡½º°¡ Æ÷ÇÔµÈ Äڵ带 »ç¿ëÇÑ´Ù°í Çؼ ±âÁ¸ ¹öÀü°ú ȣȯ¼ºÀÌ ¾ø¾îÁöÁö´Â ¾Ê´Â´Ù.
¸â¹ö·Î Á¸ÀçÇϹǷΠ¸â¹ö µµ±¸³ª ¸â¹ö ÇÊµå ¾Õ¿¡ ¿À´Â °Íó·³ public, private, static, final µîÀÇ Á¦ÇÑÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
µµ±¸³ª ºí·Ï ³»ºÎ¿¡¼¸¸ Á¸ÀçÇϴ Ŭ·¡½ºÀÌ´Ù. ÀÌ Å¬·¡½º´Â ÇØ´ç ºí·Ï ³»¿¡¼¸¸ À¯È¿ÇÏ´Ù. Áö¿ª Ŭ·¡½º´Â ¸â¹ö°¡ ¾Æ´Ï¹Ç·Î public, private, static, final µîÀÇ Á¦ÇÑÀÚ°¡ ¿Ã ¼ö ¾ø´Ù. ºí·ÏÀÇ scope¿Í Ŭ·¡½ºÀÇ scope°¡ µ¿ÀÏÇϱ⠶§¹®ÀÌ´Ù.
Áö¿ª Ŭ·¡½ºÀÇ À̸§ÀÌ º° Àǹ̰¡ ¾øÀ» ¶§, ¾Æ¿¹ »ý·«À» Çã¿ëÇÑ´Ù. Áö¿ª Ŭ·¡½ºÀ̹ǷΠ¿ª½Ã ºí·Ï ³»¿¡¼¸¸ À¯È¿ÇÏ¸ç º¸Åë ºí·Ï ³»¿¡¼ new ¿¹¾à¾î¿Í ÇÔ²² »ç¿ëµÈ´Ù.
ÀÚ¹Ù 1.1 ¹öÀü¿¡¼ ´Þ¶óÁø À̺¥Æ® ¸ðµ¨(AWT ÄÚµå ¾÷±×·¹À̵å ÂüÁ¶)Àº °¢ À̺¥Æ®¿¡ Source¿Í Listener °´Ã¼¸¦ ÁöÁ¤Çϵµ·Ï ÇÏ°í ÀÖ´Ù. Source´Â À̺¥Æ®¸¦ ¹ß»ý½ÃÅ°´Â °´Ã¼ÀÌ°í Listener´Â Source·ÎºÎÅÍ À̺¥Æ®¸¦ °Ç³×¹Þ´Â °´Ã¼ÀÌ´Ù. Listener °´Ã¼´Â addXXXListener ÇüÅÂÀÇ µµ±¸¸¦ ÅëÇÏ¿© ¼Ò½º °´Ã¼¿¡ µî·ÏÇÏ°Ô µÇ´Âµ¥ ÇØ´ç À̺¥Æ®¸¦ ó¸®ÇÒ ¼ö ÀÖ±â À§Çؼ´Â ÇØ´ç À̺¥Æ®ÀÇ Listener ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÑ´Ù. ÇϳªÀÇ À̺¥Æ®¸¦ ó¸®Çϱâ À§Çؼµµ Listener ÀÎÅÍÆäÀ̽º°¡ °¡Áö´Â ¸ðµç ¸â¹ö µµ±¸µéÀ» ±¸ÇöÇØ¾ß ÇϹǷΠºÒÇÊ¿äÇÏ°Ô ÄÚµùÀÌ ´Ã¾î³´Ù. ¿¹¸¦ µé¾î À©µµ¿ì°¡ ´Ý±â´Â À̺¥Æ®¸¦ ó¸®ÇÏ°íÀÚ ÇÑ´Ù¸é WindowEvent¸¦ ó¸®ÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀº WindowListener ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ¿© windowClosing µµ±¸¿¡¼ 󸮸¦ ÇØ¾ß ÇÑ´Ù. ÇÏÁö¸¸ ÀÌ ÀÎÅÍÆäÀ̽º´Â ¸ðµÎ 7°³ÀÇ µµ±¸¸¦ °¡Áø´Ù. ÀÚ¹Ù¿¡¼ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ´Ù´Â °ÍÀº ÀÎÅÍÆäÀ̽ºÀÇ ¸ðµç µµ±¸¸¦ ±¸ÇöÇÑ´Ù´Â ÀǹÌÀÌ´Ù. (ºñ·Ï ±×°ÍÀÇ ¸öü¿¡´Â ¾Æ¹« ³»¿ëÀÌ ¾ø´Ù ÇÏ´õ¶óµµ Çѹø ´õ ½áÁÖ¾î¾ß ÇÑ´Ù.) ÀÌ°ÍÀ» Çѹø Àû¾îº¸ÀÚ.
import java.awt.Frame; import java.awt.event.*; public class A extends Frame implements WindowListener { A () { addWindowListener(this); // Listener Ŭ·¡½º°¡ ÀÚ±â ÀÚ½Å(this) } public static void main(String[] args) { A a=new A(); a.show(); } public void windowClosing(WindowEvent we) { // À¯ÀÏÇÏ°Ô ±¸ÇöÇÏ°í ½ÍÀº µµ±¸ System.out.println("before window is closed"); System.exit(0); } /* ¾Æ·¡ÀÇ 6°³ µµ±¸´Â ¿©±â¼´Â ¾Æ¹«·± °ü½ÉÀÌ ¾øÁö¸¸ WindowListener ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ¿øÁË·Î ¸öüµµ ¾øÀÌ ÄÚµù Ç°¸¸ Ãà³»¾ß ÇÔ. */ public void windowClosed(WindowEvent we) { } public void windowDeiconified(WindowEvent we) { } public void windowIconified(WindowEvent we) { } public void windowActivated(WindowEvent we) { } public void windowDeactivated(WindowEvent we) { } public void windowOpened(WindowEvent we) { } }
ºÒÇÊ¿äÇÑ ÄÚµù Ç°À» ÁÙÀ̱â À§ÇØ ³»ºÎ Ŭ·¡½º¸¦ È°¿ëÇÒ ¼ö ÀÖµµ·Ï ÀÚ¹Ù 1.1¿¡¼´Â
¾î´ðÅÍ Å¬·¡½º¸¦ Á¦°øÇÑ´Ù.
java.awt.events ÆÐÅ°Áö¿¡ ÀÖ´Â À̺¥Æ® Ŭ·¡½ºµéÀº ComponentAdapter, ContainerAdapter,
FocusAdapter, KeyAdapter, MouseAdapter, MouseMotionAdapter, WindowAdapter
¸ðµÎ 7°³·Î À̵éÀº °¢°¢ ÀÚ½ÅÀÇ À̸§¿¡¼ Adapter¸¦ »©°í Listener¸¦ ºÙÀÎ ÀÎÅÍÆäÀ̽º¸¦
¾Æ¹« ¸öü ¾øÀÌ ¹Ì¸® ±¸ÇöÇسõÀº Ŭ·¡½ºµéÀÌ´Ù. Áï, ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϸé
°¢ µµ±¸¸¦ ¸ðµÎ ±¸ÇöÇØ¾ß ÇÏÁö¸¸ ÀÌ¹Ì ¾Æ¹« ¸öü ¾øÀÌ ±¸ÇöÇسõÀº Adapter Ŭ·¡½º¸¦
»ó¼ÓÇϸé ÇÊ¿äÇÑ µµ±¸¸¸ µ¤¾î¾²¸é µÈ´Ù.
ÀÚ¹Ù ¾ð¾îÀÇ Æ¯Â¡À» ÃÖ´ëÇÑ »ì·Á ÄÚµù Ç°À» ÁÙ¿©ÁÖ´Â ÆíÀÇ Å¬·¡½ºµéÀÎ ¼ÀÀÌ´Ù.
ÀÚ, WindowAdapter Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© À§ÀÇ Äڵ带 ´Ü¼øÇÏ°Ô Çغ¸ÀÚ.
¸ÕÀú Ŭ·¡½º ¼±¾ð¹®ÀÇ ´ÙÀ½ ÀÎÅÍÆäÀ̽º ¼±¾ð¹®Àº »èÁ¦ÇÑ´Ù.
/* implements WindowListener */
WindowListener ÀÎÅÍÆäÀ̽ºÀÇ 7°³ µµ±¸´Â »ç¶óÁö°í addActionListenerÀÇ
ÀÎÀÚ(WindowEvent ó¸® °´Ã¼)ÀÎ WindowListener´Â this°¡ ¾Æ´Ï¶ó WindowListener ÀÎÅÍÆäÀ̽º¸¦ ¹Ì¸® ±¸ÇöÇسõÀº WindowAdapter Ŭ·¡½º¸¦ »ó¼ÓÇÑ °´Ã¼°¡ µÈ´Ù.
»ý¼ºÀÚ µµ±¸¿¡¼ addActionListener ±¸¹®À» ¹Ù²ÙÀÚ.
A() { addActionListener(this); }
´ë½Å¿¡ ´ÙÀ½°ú °°ÀÌ Áö¿ª Ŭ·¡½º¸¦ Æ÷ÇÔÇÏ°Ô µÈ´Ù.
A() { class AWindowAdapter extends WindowAdapter { public void windowClosing(WindowEvent we) { System.out.println("before window is closed"); System.exit(0); } } // end of class AWindowAdapter's declaration addWindowListener(new AWindowAdapter()); // Listener °´Ã¼°¡ AWindowAdapter Ŭ·¡½º ÀνºÅϽº }
»ç½Ç À̺¥Æ® ¾î´ðÅÍ Å¬·¡½º¸¦ »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ °æ¿ì¿¡ º°µµÀÇ À̸§ÀÌ ÇÊ¿ä¾ø´Ù. À§¿¡¼µµ ¾Æ¿¹ ÀνºÅϽº º¯¼ö À̸§Á¶Â÷ ¸¸µéÁö ¾Ê¾Ò´Ù. À̸§¾ø´Â Áö¿ª Ŭ·¡½º¸¦ »ç¿ëÇÏ¸é ´õ¿í °£´ÜÇØÁø´Ù. ¾Õ¿¡¼ ¼³¸íÇßµíÀÌ À̸§¾ø´Â Áö¿ª Ŭ·¡½º´Â new ¿¹¾à¾î¸¦ »ç¿ëÇÏ¿© Ŭ·¡½º »ó¼ÓÀ» ÇÔÃàÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ ¹Ù²ï´Ù.
A() { addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent we) { System.out.println("before window is closed"); System.exit(0); } } // end of anonymous class's declaration ); // Listener °´Ã¼°¡ À̸§ ¾ø´Â WindowAdapter Ŭ·¡½º ÀνºÅϽº }
ÀÚ¹Ù 1.1ÀÇ »õ·Î¿î À̺¥Æ® ¸ðµ¨¿¡ µû¶ó ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é À̺¥Æ® ¾î´ðÅÍ
Ŭ·¡½º »ç¿ëÀº °ÅÀÇ »ýÈ°¿¡ °¡±î¿ï °ÍÀÌ´Ù. ¶Ç ´ëºÎºÐÀÇ À̺¥Æ® ¾î´ðÅÍ´Â À̸§¾ø´Â
Áö¿ª Ŭ·¡½º·Î »ç¿ëµÉ °ÍÀÌ´Ù.
³»ºÎ Ŭ·¡½ºÀÇ ¹®¹ý À¯Çü¿¡ Àͼ÷ÇØÁö±â À§Çؼµµ À§¿Í °°Àº ÄÚµå Çü½ÄÀ» ¹Ýº¹Çؼ
»ç¿ëÇÒ °ÍÀ» ±ÇÇÑ´Ù.
³»ºÎ Ŭ·¡½º ÇнÀÀ» µ½±â À§Çؼ À§ÀÇ Äڵ带 ¸â¹ö Ŭ·¡½º ¹öÀüÀ¸·Î ¿Å°Ü º¸ÀÚ. »ç½Ç À̸§ ÀÖ´Â Áö¿ª Ŭ·¡½º ¹öÀü¿¡¼ Ŭ·¡½º ¼±¾ð¹®À» µµ±¸ ³»¿¡¼ µµ±¸ ¹ÛÀ¸·Î »©³»¸é µÈ´Ù.
public class A extends Frame { class AWindowAdapter extends WindowAdapter { public void windowClosing(WindowEvent we) { System.out.println("before window is closed"); System.exit(0); } } // end of class AWindowAdapter's declaration A () { addWindowListener(new AWindowAdapter()); // Listener °´Ã¼°¡ AWindowAdapter Ŭ·¡½º ÀνºÅϽº } public static void main(String[] args) { A a=new A(); a.show(); } }
ÀÚ¹Ù 1.1Àº ÀÚ¹Ù 1.0°úÀÇ ¹ÙÀ̳ʸ® ȣȯ¼º µîÀ» °í·ÁÇÏ¿© ³»ºÎ Ŭ·¡½º¶ó´Â
»õ·Î¿î °³³äÀ» ¹®¹ý¿¡ Ãß°¡ÇÏ¸é¼ ¸î °¡Áö Æí¹ý(?)À» »ç¿ëÇÏ¿´´Ù. Áï ³»ºÎ Ŭ·¡½º´Â
ÀüÇô Ŭ·¡½º ¹ÙÀ̳ʸ® ÆÄÀÏÀ» °¡Áö°í ½ÇÇàÇÏ´Â ÀÚ¹Ù °¡»ó ±â°è¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö
¾Êµµ·Ï °í·ÁµÇ¾ú´Ù. Áï, ÀÚ¹Ù 1.1ÀÇ »õ·Î¿î ±â´ÉÀ» ÀüÇô »ç¿ëÇÏÁö ¾Ê¾Ò´Ù¸é
³»ºÎ Ŭ·¡½º ¹®¹ýÀ» »ç¿ëÇÑ ÀÚ¹Ù ¼Ò½º Äڵ带 ÀÚ¹Ù 1.1ÀÇ ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏÇÑ
´ÙÀ½ ÀÚ¹Ù 1.0ÀÇ °¡»ó ±â°è¿¡¼ (Áï, ÀÚ¹Ù 1.0ÀÇ ÀÎÅÍÇÁ¸®ÅÍ·Î) ½ÇÇàÇÏ¿©µµ
½ÇÇàÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.
½ÇÁ¦·Î ³»ºÎ Ŭ·¡½º´Â $ ºÎÈ£¸¦ Æ÷ÇÔÇÑ º°µµÀÇ Å¬·¡½º ÆÄÀÏ·Î ÄÄÆÄÀϵȴÙ.
À§ÀÇ ¿¹Á¦¿¡¼ °¢ ¹öÀüÀ» ÄÄÆÄÀÏÇÏ¸é ´ÙÀ½ Ŭ·¡½º ÆÄÀϵéÀÌ »ý¼ºµÈ´Ù.
(1) ¿ø·¡ÀÇ A Ŭ·¡½º(³»ºÎ Ŭ·¡½º »ç¿ëÇÏÁö ¾ÊÀº ¹öÀü)
´ç¿¬ÇÏÁö¸¸ ÇϳªÀÇ Å¬·¡½º¹Û¿¡ ¾øÀ¸¹Ç·Î ÇϳªÀÇ Å¬·¡½º ÆÄÀϸ¸ »ý¼ºµÈ´Ù.
(2) ¸â¹ö Ŭ·¡½º ¹öÀü
A Ŭ·¡½º ¸â¹öÀÎ AWindowAdapter Ŭ·¡½º´Â $ºÎÈ£¸¦ »ç¿ëÇÏ¿© A$AWindowAdapter.class
ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
(3) À̸§ ÀÖ´Â Áö¿ª Ŭ·¡½º ¹öÀü
Áö¿ª Ŭ·¡½º´Â ºí·ÏÀ̳ª µµ±¸ ¾È¿¡¼¸¸ Á¤ÀǵǹǷΠºí·ÏÀ̳ª µµ±¸µéÀ» ±¸º°Çϱâ
À§ÇÏ¿© ¹øÈ£¸¦ »ç¿ëÇÑ´Ù. Áï, ÀÌ °æ¿ì¿¡´Â Áö¿ª Ŭ·¡½º°¡ ÇϳªÀ̹ǷΠA$1$AWindowAdapter.class
ÆÄÀÏÀÌ »ý¼ºµÈ´Ù.
(4) À̸§ ¾ø´Â Áö¿ª Ŭ·¡½º ¹öÀü
ºí·ÏÀ̳ª µµ±¸¿¡ Áö¿ªÀûÀΠŬ·¡½ºÀÌ¸é¼ ÀÚ½ÅÀÇ À̸§ÀÌ ¾øÀ¸¹Ç·Î ÇØ´ç Ŭ·¡½º¸¦
¹øÈ£·Î ±¸º°ÇÑ´Ù. Áï Áö¿ª Ŭ·¡½º°¡ ÇϳªÀ̹ǷΠA$1.class ÆÄÀÏÀÌ »ý¼ºµÈ´Ù.
class Enclosing { int var; class Inner { // staticÀÌ ¾Æ´Ñ ³»ºÎ Ŭ·¡½º ... } static class StaticInner { // staticÀÎ ³»ºÎ Ŭ·¡½º ... } }Inner Ŭ·¡½º´Â Enclosing °´Ã¼ ÀνºÅϽº¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ°í ¸â¹ö ÇʵåÀÎ varµµ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
Enclosing.StaticInner obj = new Enclosing.StaticInner();staticÀÌ ¾Æ´Ñ ÀϹÝÀûÀÎ ³»ºÎ Ŭ·¡½º´Â Æ÷ÇÔÇϴ Ŭ·¡½º ¾È¿¡¼ ÁÖ·Î »ç¿ëµÉ °ÍÀÌ´Ù.
new Enclosing().new Inner();
public class InstanceInitializationBlock { public static void main(String[] args) { Thread t = new Thread() { // Thread Ŭ·¡½º¸¦ »ó¼ÓÇÏ´Â À̸§¾ø´Â Áö¿ª Ŭ·¡½º ¼±¾ð // ÀνºÅϽº ÃʱâÈ ºí·Ï { System.out.println("instance init block"); setName("SimpleThread-" + System.identityHashCode(this)); } public void run() { System.out.println("I'm running"); } }; System.out.println("thread created.."); t.start(); } }À§ÀÇ ¿¹¿¡¼ À̸§¾ø´Â Áö¿ªÅ¬·¡½º·Î ¼±¾ðµÈ ¾²·¹µå´Â »ý¼ºµÉ ¶§ ÀνºÅϽº ÃʱâÈ ºí·ÏÀ» ¼öÇàÇÑ´Ù. Áï, »ý¼ºÀÚ ¿ªÇÒÀ» ÇÑ´Ù. ÀÌ ¿¹¿¡¼´Â ¾²·¹µåÀÇ À̸§À» »ý¼ºµÈ °´Ã¼¿¡ °íÀ¯ÇÑ ÇؽÃÄڵ尪À¸·Î ÁöÁ¤ÇÏ´Â ÀÏÀ» ÇÑ´Ù.
instance init block thread created.. I'm SimpleThread-6483656...