4.6 thisÀÇ °³³ä
4.6.1 this¶õ?
this¶õ Ŭ·¡½º ³»¿¡¼ Ŭ·¡½º°¡ °¡Áö°í ÀÖ´Â ¸â¹öÇÊµå ¶Ç´Â ¸â¹ö ¸Þ¼Òµå¸¦ Á÷Á¢ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â ÀÚ½ÅÀÇ ÂüÁ¶ º¯¼öÀÔ´Ï´Ù. ÀÌ°Ô ¹«½¼ ¸»À̳İí¿ä. ÀÌ°Ô ¹«½¼ ¸»ÀÎÁö ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. this¸¦ »ç¿ëÇÒ ¶§´Â 3°¡Áö ¹æ¹ýÀ» ÀÌ¿ëÇϰí ÀÖ½À´Ï´Ù. ±× ¿¹´Â ¾Æ·¡¿Í °°½À´Ï´Ù.
n this.¸â¹öÇʵå, this.¸â¹ö¸Þ¼µå
n this
n this(¸Å°³º¯¼ö);
ÀÌ ¿¹¸¦ ¾Ë¾Æº¸¸é¼ thisÀÇ °³³ä¿¡ Á¢±Ù ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
4.6.2 thisÀÇ ÀǹÌ
¸ÕÀú this¿¡ ´ëÇÑ Á¤ÀǺÎÅÍ ÇØ°á ÇØ º¸µµ·Ï ÇÏÁÒ. this¸¦ ´ÙÀ½°ú °°ÀÌ Ç®¾î¼ À̾߱â ÇÒ ¼ö ÀÖ½À´Ï´Ù.
n Ŭ·¡½º ³»¿¡¼ Ŭ·¡½º°¡ °¡Áö°í ÀÖ´Â º¯¼ö ¶Ç´Â ¸Þ¼Òµå¸¦ Á÷Á¢ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
n Ŭ·¡½º ³»¿¡¼ ÀÚ½ÅÀÇ ¸â¹öµéÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ´ç¿¬ÇÑ ÀÏÀÔ´Ï´Ù.
n ÀÚ½ÅÀ» ÂüÁ¶ÇÏ´Â °´Ã¼ º¯¼ö this¸¦ ÀÌ¿ëÇÏ¿© ¸â¹ö¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
n µðÀÚÀΟÀÓ¿¡ ÀÚ±â ÀÚ½ÅÀ» Á÷Á¢ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â °´Ã¼ º¯¼öÀÔ´Ï´Ù.
n µðÀÚÀΟÀÓ¿¡ ÀÚ±â ÀÚ½ÅÀ» ÂüÁ¶ÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ Å°¿öµåÀÔ´Ï´Ù.
ÀڱⰡ ÀÚ±â ÀÚ½ÅÀ» ÂüÁ¶ÇÑ´Ù´Â Àǹ̰¡ ¹«¾ùÀϱî¿ä. ºÐ¸íÈ÷ ¿©·¯ºÐÀº this¸¦ Ŭ·¡½ºÀÇ µðÀÚÀΟÀÓ¿¡ »ç¿ë ÇÒ ¼ö ÀÖ½À´Ï´Ù. this´Â µðÀÚÀΟÀÓ¿¡ »ç¿ëÇÏ´Â °ÍÀÌÁö ½ÇÇàŸÀÓ¿¡ Á÷Á¢ ¿©·¯ºÐÀÌ »ç¿ëÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ÀÚ¹Ù °¡»ó ¸Ó½ÅÀÌ »ç¿ëÇÏ´Â °ÍÀ̶ó°í ¸» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Ŭ·¡½º¸¦ µðÀÚÀÎ ÇÒ ¶§´Â ¾ÆÁ÷ ¸Þ¸ð¸®°¡ ÇÒ´çµÇÁö ¾ÊÀº ¼ø°£ÀÔ´Ï´Ù. ¾ðÁ¨°¡´Â ÇÒ´ç µÇ°ÚÁÒ. ÇÏÁö¸¸ ¾ðÁ¨°¡ ÇÒ´çµÉ ÁÖ¼ÒÀÇ ÂüÁ¶ °ªÀº ¾ÆÁ÷ ¹ÌÁ¤ÀÔ´Ï´Ù. °´Ã¼¸¦ »ý¼ºÇϱâ Àü ´Ü°è¿¡ ±× ÁÖ¼Ò¸¦ this¶ó°í ĪÇϰí ÇÒ´çµÇ´Â ¼ø°£ this´Â ÇÒ´ç µÇ´Â ¸Þ¸ð¸®ÀÇ ÂüÁ¶°ªÀ» °®°Ô µÈ´Ù¸é this´Â µðÀÚÀΟÀÓ¿¡ ½ÇÇàŸÀÓÀÇ ÁÖ¼Ò¸¦ ¾Æ´Â °Íó·³ ÇൿÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¦°¡ ¼³¸íÇØ ³õ°íµµ ¸ðÈ£Çϳ׿ä. ±×·¸´Ù¸é ÀÌ·¸°Ô ÇØ º¸½Ê½Ã¿À. this¸¦ ¡°¾ðÁ¨°¡ »ý¼ºµÇ¾îÁú ³» ÁÖ¼ÒthisÀÇ¡±¶ó´Â °£´ÜÇÑ ´Ü¾î¸¦ ¹Ù²Ù¾î¼ ÇØ¼®ÇØ º¸½Ê½Ã¿À.
À§ÀÇ ±×¸²Àº this°¡ ÃʱâÈ µÇ´Â ¼ø°£À» º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù. µðÀÚÀΟÀÓ¿¡¼ Ŭ·¡½º´Â ¾ÆÁ÷ µ¥ÀÌÅÍ Å¸ÀÔÀ̱⠶§¹®¿¡ ¸Þ¸ð¸®¸¦ ÇÒ´ç ÇÏÁö ¾ÊÀº »óÅÂÀÔ´Ï´Ù. Ŭ·¡½º°¡ °´Ã¼¸¦ »ý¼ºÇÏ¿© ¸Þ¸ð¸®¸¦ °®´Â ¼ø°£ »ý¼ºµÈ ¸Þ¸ð¸®ÀÇ ÂüÁ¶°ªÀ» °´Ã¼º¯¼ö°¡ °¡Áö°Ô µË´Ï´Ù.
n Top a = new Top();
n Top b = new Top();
n Top c = new Top();
n Top d = new Top();
À§ÀÇ ±×¸²¿¡¼ 4°³ÀÇ ÂüÁ¶ °ª a, b, c, d¸¦ »ý¼ºÇϰí ÀÖ½À´Ï´Ù. ¹®Á¦´Â ÀÌ ÂüÁ¶ °ªµéÀº ¸Þ¸ð¸®°¡ »ý¼ºµÇ´Â ¼ø°£ÀÇ ÂüÁ¶ °ªÀ̶ó´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº ÀϹÝÀûÀÎ ¹æ¹ýÀÔ´Ï´Ù. ÇÏÁö¸¸, this´Â µðÀÚÀΟÀÓ¿¡ ÀÚ½ÅÀ» ÂüÁ¶ÇÒ ¼ö ÀÖ´Â ÂüÁ¶ °ªÀÔ´Ï´Ù. µðÀÚÀΟÀÓ¿¡ Ŭ·¡½ºÀÇ ¸Þ¸ð¸®°¡ »ý¼ºµÇ³ª¿ä. ¾Æ´Õ´Ï´Ù. ±×Àú ÇϳªÀÇ ÇüÅÂÀÏ »ÓÀÔ´Ï´Ù. ±×·¸´Ù¸é ¾î¶»°Ô this°¡ »ý¼ºµÇÁöµµ ¾ÊÀº ÀÚ½ÅÀ» ÂüÁ¶ ÇÒ ¼ö ÀÖÀ»±î¿ä?
Àß »ý°¢ ÇØ º¸½Ê½Ã¿À. µðÀÚÀΟÀÓÀÇ ÂüÁ¶°ªÀº ¾ÆÁ÷Àº ºñ¾îÀÖ´Â ÀÖ´Ù°í °¡Á¤ÇÏ°í ½ÇÇàÇÒ ¶§ this¿¡´Ù °¢°¢ÀÇ °´Ã¼°¡ ÇÒ´ç ¹ÞÀº °ªÀ» ³Ö¾î Áشٸé ÇϳªÀÇ this°¡ ¸Þ¸ð¸®°¡ »ý¼ºµÇ´Â ¼ø°£ °¢°¢ÀÇ °´Ã¼¿¡ ´ëÇÑ this°¡ µÇÁö ¾Ê°Ú½À´Ï±î!
this¶ó´Â °´Ã¼º¯¼ö´Â ¾ÆÁ÷ ¸¸µé¾îÁöÁöµµ ¾ÊÀº ÀÚ½ÅÀÇ ÂüÁ¶°ªÀ̶ó´Â °¡Á¤ÇÏ¿¡¼ Ŭ·¡½º ³»¿¡ »ç¿ëµÇ¾îÁý´Ï´Ù. ±×¸®°í ¸Þ¸ð¸®°¡ »ý¼ºµÇ¸é ±× ¶§ °´Ã¼º¯¼ö°¡ °¡Áö´Â °ª°ú °°Àº ÂüÁ¶°ªÀ» °¡Áö°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á µðÀÚÀΟÀÓ¿¡ ÇϳªÀÇ À̸§À¸·Î ÀÚ½ÅÀ» ÂüÁ¶ÇÏ°í ½ÇÇà ŸÀÓ¿¡¼´Â °¢°¢¿¡ Àû¿ë µÇ¾îÁú ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.
4.6.3 this.¸â¹öÇʵå, ths.¸â¹ö¸Þ¼µå
thisÀÇ »ç¿ë¹ý Áß¿¡¼ this¸¦ ÀÌ¿ëÇÏ¿© ÀÚ½ÅÀ» ÂüÁ¶ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. Ŭ·¡½º ³»¿¡¼ »ç¿ëµÇ¾îÁö´Â ¸â¹öÇʵå¿Í ¸â¹ö¸Þ¼µå¸¦ »ç¿ëÇÒ ¶§ this¸¦ »ç¿ëÇÏ´Â °Í°ú ÇÏÁö ¾Ê´Â °ÍÀº µ¿ÀÏÇÕ´Ï´Ù. ±ÍÂú±â ¶§¹®¿¡ this¸¦ »ç¿ëÇÏÁö ¾ÊÁö¸¸ this¸¦ Ç¥½ÃÇÑ´Ù¸é ÄÚµå´Â ´õ¿í ¸íÈ®ÇØÁý´Ï´Ù. Äڵ尡 ±æ¾îÁö¸é »ç¿ëÇÏ´Â º¯¼ö°¡ Ŭ·¡½ºÀÇ ¸â¹öÇʵåÀÎÁö ¾Æ´Ï¸é Áö¿ªº¯¼öÀÎÁö È¥µ¿ µÉ ¼ö°¡ ÀÖ½À´Ï´Ù. ¸¸¾à this¸¦ ÀÌ¿ëÇÑ´Ù¸é ¾ÆÁÖ °£´ÜÈ÷ ¸â¹öÀÎÁö ¾Æ´ÑÁö¸¦ ±¸ºÐÇÒ ¼ö ÀÖ½À´Ï´Ù.
µðÀÚÀΟÀÓÀÇ this´Â °øÅëµÈ thisÀÌÁö¸¸ ½ÇÇà ŸÀÓÀÇ this´Â »ý¼ºµÇ¾îÁö´Â °´Ã¼ º¯¼öÀÇ ÂüÁ¶°ª°ú °°Àº °ªÀ» °¡Áö±â ¶§¹®¿¡ °¢°¢ÀÇ this°¡ µÇ´Â °ÍÀÔ´Ï´Ù. ¾ÆÁ÷ »ý¼ºµµ µÇÁö ¾ÊÀº ¸Þ¸ð¸®¿¡ ´ëÇÑ ÂüÁ¶°ªÀ» this¶ó´Â °´Ã¼º¯¼ö°¡ ³ªÁß¿¡ ¸Þ¸ð¸®°¡ »ý¼ºµÇ¾îÁö¸é °¡Áú °ÍÀ̶ó´Â °¡Á¤ÇÏ¿¡ »ç¿ëÇÏ´Â °ÍÀÌ´Ï this¸¦ »ç¿ëÇÏ¿© ¸â¹ö¿¡ Á¢±ÙÇϵçÁö ±×³É ¸â¹ö¿¡ Á¢±ÙÇϵçÁö °á±¹¿¡´Â °°Àº °ÍÀÔ´Ï´Ù. ÀÏ´Ü ¿¹¸¦ µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
ThisTest.java(this Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦) |
public class ThisTest { private int number; private String name; public ThisTest(String name, int number){ //this¸¦ ÀÌ¿ëÇÑ ¸Å°³º¯¼ö¿ÍÀÇ ±¸ºÐ this.name = name; this.number = number; } public void print(){ System.out.println("-- this¸¦ ÀÌ¿ëÇÑ ¸â¹ö Å×½ºÆ®---"); System.out.println("name:" + this.name + " number:" + this.number); } public void myprint(){ System.out.println("-- this¸¦ ÀÌ¿ëÇÑ ¸Þ¼µå Å×½ºÆ®---"); this.print(); } public static void main(String[] args){ ThisTest th = new ThisTest("È«±æµ¿", 20); th.print(); th.myprint(); } } |
C:\examples\4. Class for Basic Java>javac ThisTest.java C:\examples\4. Class for Basic Java>java ThisTest name:È«±æµ¿ number:20 -- this¸¦ ÀÌ¿ëÇÑ ¸Þ¼µå Å×½ºÆ®--- |
ÀÌ ThisTestŬ·¡½º¿¡¼´Â µÎ °³ÀÇ ¸â¹öÇʵ带 °¡Áö°í ÀÖ½À´Ï´Ù. ÀÌ ¸â¹öÇʵ忡 Á¢±ÙÇÏ´Â ¹æ¹ýÀº Ŭ·¡½º ³»¿¡¼´Â name°ú number¸¦ »ç¿ëÇÏ°í ½ÍÀº °÷¿¡ ¸¶À½´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ »ý¼ºÀÚ¸Þ¼µå¸¦ º»´Ù¸é nameÀÌ Áߺ¹µÇ¾î ÀÖ½À´Ï´Ù. À̰ÍÀº ¸Þ¼µåÀÇ ¸Å°³º¯¼ö¿Í Ŭ·¡½ºÀÇ ¸â¹öÇʵ尡 µ¿ÀÏÇϱ⠶§¹®¿¡ ±¸ºÐÀ» ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. À̰ÍÀ» ±¸ºÐÇϱâ À§ÇÑ ¹æ¹ýÀ¸·Î this¸¦ »ç¿ëÇÑ´Ù¸é ¸â¹ö¶ó´Â ÀǹÌÀÔ´Ï´Ù. À§ ¿¹Á¦ÀÇ »ý¼ºÀÚ ºÎºÐ¿¡¼ ÀÌ·¯ÇÑ º¯¼öÀÇ ¾Ö¸Å¼ºÀ» ¸íÈ®ÇÏ°Ô ÇØ°áÇϰí ÀÖ½À´Ï´Ù.
public ThisTest(String name, int number){ //this¸¦ ÀÌ¿ëÇÑ ¸Å°³º¯¼ö¿ÍÀÇ ±¸ºÐ this.name = name; this.number = number; } |
¸Å°³º¯¼öÀÇ À̸§µµ nameÀÌ°í ¸â¹öÇʵåÀÇ À̸§µµ nameÀÔ´Ï´Ù. ¾ð¾îÀûÀÎ ¿ø¸®¿¡ ÀÇÇÏ¸é °¡±î¿î º¯¼ö°¡ ´õ Å« ¿µÇâ·ÂÀÌ ÀÖ½À´Ï´Ù. this¸¦ ºÙÀÌÁö ¾ÊÀ¸¸é »ý¼ºÀÚ¸Þ¼µå³»¿¡ Á¸ÀçÇÏ´Â nameÀº ¸ðµÎ ¸Å°³º¯¼öÀÇ nameÀÔ´Ï´Ù. ÀÌ·¸°Ô µÈ´Ù¸é ¿ÜºÎ¿¡¼ µé¾î¿À´Â µ¥ÀÌÅ͸¦ ¸â¹öÇʵ忡 ³ÖÀ» ¼ö°¡ ¾ø½À´Ï´Ù.
¸¸¾à¿¡ this¸¦ ºÙÀδٸé this´Â ¾ðÁ¨°¡ »ý¼ºµÇ¾îÁú ³» ÁÖ¼ÒthisÀÇ nameÀÌ µÇ¾î ¹ö¸³´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ´ç¿¬È÷ this.nameÀº ¸â¹ö º¯¼öÀÇ nameÀÌ µÇ±â ¶§¹®¿¡ º°´Ù¸¥ ³ë·Â ¾øÀÌ º¯¼öÀÇ À̸§ÀÌ °°¾Æµµ ´Ï²¨ ³»²¨ È®½ÇÇÏ°Ô ±¸º° ÁöÀ» ¼ö ÀÖ½À´Ï´Ù. name°ú number´Â »ý¼ºÀÚ¸Þ¼µåÀÇ ¸Å°³º¯¼ö¸¦ ¸»ÇÏ´Â °ÍÀ̸ç this.name°ú this.numberÀº ¸â¹öÇʵ带 °¡¸£Å°´Â °ÍÀÔ´Ï´Ù.
this¶ó´Â Ű¿öµå´Â ¸â¹ö¶ó´Â °ÍÀ» ¾Ë¸®´Â ÇϳªÀÇ Ç¥½Ã¹æ¹ýÀÌÁö¸¸ ¸¸¾à À§ÀÇ »óȲó·³ Ư¼öÇÑ °æ¿ì°¡ ¾Æ´Ï¸é thisŰ¿öµå¸¦ »ç¿ëÇÏÁö ¾Ê¾Æµµ ¹«¹æÇÏ´Ù. ÇÏÁö¸¸ thisŰ¿öµå¸¦ »ç¿ëÇÏ¿© ¾î´À ¼Ò¼ÓÀÇ ¸Þ¼µåÀÎÁö º¯¼öÀÎÁö¸¦ ºÐ¸íÈ÷ ÇÑ´Ù¸é ÄÚµå´Â ´õ¿í ¸íÈ®ÇØ Áý´Ï´Ù. Ŭ·¡½º ³»¿¡ ¸ðµç ¸â¹ö´Â this¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç »ç¿ëÇÏÁö ¾Ê¾Æµµ »ó°üÀº ¾ø½À´Ï´Ù.
4.6.4 this
this°¡ È¥ÀÚ¼ ÀÌ¿ëµÇ¸é ÀÚ½ÅÀÇ ÂüÁ¶°ªÀ» ÀǹÌÇÕ´Ï´Ù. ÇÏÁö¸¸ ÀÌ ÂüÁ¶´Â µðÀÚÀΟÀÓ¿¡¼ Àû¿ëµÇ¾îÁöÁö¸¸ °á±¹ÀÇ this´Â ¾ðÁ¨°¡ ¸¸µé¾îÁú ¸Þ¸ð¸®ÀÇ ÂüÁ¶°ª thisÀÔ´Ï´Ù. Áï, ÀÌ ¸»Àº ½ÇÇà ŸÀÓ¿¡ this ÀÚü´Â °´Ã¼¸¦ »ý¼ºÇÒ ¶§ °´Ã¼ º¯¼ö°¡ °¡Áö´Â °ª°ú °°Àº °ªÀ» °¡Áö°Ô µË´Ï´Ù. »ý¼ºµÉ °´Ã¼ÀÇ ÂüÁ¶°ª¸¦ ÀÇ¹Ì ÇÏ´Â °ÍÀÔ´Ï´Ù. thisÀÚü¸¦ »ç¿ëÇÏ´Â ¿¹¸¦ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
SpecialThis.java(this Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦) |
public class SpecialThis{ private int i = 0; public void plusCount(){ i++; } public SpecialThis getMySelf(){ return this; } public void print(){ System.out.println("member i = " + this.i); } public static void main(String args[]){ SpecialThis st = new SpecialThis(); SpecialThis st2 = st.getMySelf(); st.print(); st.plusCount(); st.print(); st2.plusCount(); st2.print(); st.plusCount(); st.print(); } } |
C:\examples\4. Class for Basic Java>javac SpecialThis.java C:\examples\4. Class for Basic Java>java SpecialThis member i = 0 member i = 1 member i = 2 |
this¶ó´Â Ű¿öµå°¡ ¾ø´Ù¸é Ŭ·¡½º´Â ÇöÀç µðÀÚÀΟÀÓÀ̱⠶§¹®¿¡ ÀÚ½ÅÀ» ÂüÁ¶ÇÒ ¹æ¹ýÀº ¾ø½À´Ï´Ù. Àß »ý°¢ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. ¾ÆÁ÷ ¸¸µé¾îÁöÁöµµ ¾ÊÀº ÀÚ½ÅÀ» ¾î¶»°Ô ÂüÁ¶ÇÒ ¼ö ÀÖ ÀÖ°Ú½À´Ï±î? thisŰ¿öµå´Â ±×Àú this.¸â¹öÇʵå, this.¸â¹ö¸Þ¼µå ÀÌ·¸°Ô »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó °´Ã¼°¡ ¸Þ¸ð¸®¸¦ ÇÒ´ç ¹Þ´Â ¼ø°£¿¡ °´Ã¼º¯¼ö°¡ °¡Áö´Â °ª°ú ¶È °°Àº °ªÀ» °¡Áö±â ¶§¹®¿¡ this ÀÚü´Â, µðÀÚÀΟÀÓ¿¡ ÀÚ½ÅÀ» °¡¸£Å°´Â, ÀÚ±âÀÚ½ÅÀÇ °´Ã¼º¯¼ö¶ó°í º¸¸é µË´Ï´Ù.
public SpecialThis getMySelf(){ return this; } |
À§ÀÇ ÀÌ ¸Þ¼µå´Â °´Ã¼°¡ »ý¼ºµÇ¾îÁø ÈÄ È£Ãâ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í this´Â °´Ã¼°¡ »ý¼ºµÇ¾îÁö¸é °´Ã¼º¯¼öÀÇ °ª°ú °°Àº ÂüÁ¶ °ªÀ» °¡Áö°Ô µË´Ï´Ù. ±×·¯´Ï this´Â ÀÚ½ÅÀÇ ÇüÀº ÇöÀç Ŭ·¡½ºÀÇ µ¥ÀÌÅÍŸÀÔ°ú °°½À´Ï´Ù. ¸Þ¼µåÀÇ ¸®ÅÏŸÀÔ°ú ¸®ÅÏ µÇ¾îÁö´Â °ÍÀº °°¾Æ¾ß ÇÕ´Ï´Ù. ¿©±â¼ thisÀÇ Å¸ÀÔÀº ÀÚ½ÅÀÇ ÂüÁ¶º¯¼öÀ̱⠶§¹®¿¡ SpecialThis µ¥ÀÌÅÍ Å¸ÀÔÀÔ´Ï´Ù. ±×¸®°í, ÀÚ½ÅÀ» ¸®ÅÏÇϰíÀÚ ÇÑ´Ù¸é ¡°return this;¡± ¶ó°í ÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù.
4.6.5 this()
this()´Â Ŭ·¡½º ÀÚ½ÅÀÇ »ý¼ºÀÚ¸Þ¼µå¸¦ È£ÃâÇÒ ¶§µµ »ç¿ëÇÕ´Ï´Ù. Ŭ·¡½º ³»¿¡¼ À¯ÀÏÇÏ°Ô È£ÃâÇÒ ¼ö ¾ø´Â ¸Þ¼µå°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼µå°¡ ¹Ù·Î »ý¼ºÀÚ¸Þ¼µåÀÔ´Ï´Ù. À̰ÍÀ» È£ÃâÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÏ´Â °ÍÀÌ ¹Ù·Î thisÀÔ´Ï´Ù. ¾Æ·¡´Â this¸¦ ÀÌ¿ëÇÏ¿© »ý¼ºÀÚ¸Þ¼µå¸¦ È£ÃâÇϰí ÀÖ´Â ¿¹ÀÔ´Ï´Ù.
ThisSelf.java(this Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦) |
public class ThisSelf{ private String name; private int age; public ThisSelf(){ this("À̸§¾øÀ½"); } public ThisSelf(String name){ this(name, -1); } public ThisSelf(String name, int age){ this.name = name; this.age = age; System.out.println("name:" + name + " number:" + age); } public static void main(String[] args){ ThisSelf ts1 = new ThisSelf(); ThisSelf ts2 = new ThisSelf("È«±æµ¿"); ThisSelf ts3 = new ThisSelf("±è»ñ°«", 50); } } |
C:\examples\4. Class for Basic Java>javac ThisSelf.java C:\examples\4. Class for Basic Java>java ThisSelf name:À̸§¾øÀ½ number:-1 name:È«±æµ¿ number:-1 |
ThisSelfŬ·¡½ºÀÇ µðÆúÆ® »ý¼ºÀÚ¸¦ È£Ãâ ÇßÀ» ¶§
n this(¡°À̸§¾øÀ½¡±)Àº ThisSelf(String name)¸Þ¼µå¸¦ È£Ãâ ÇÕ´Ï´Ù.
n ±×¸®°í ThisSelf(String name)»ý¼ºÀÚ´Â ´Ù½Ã this(name, -1)À̶ó´Â °÷¿¡¼ ThisSelf(String name, int age)¸¦ È£Ãâ ÇÕ´Ï´Ù.
»ý¼ºÀÚ¸Þ¼µå´Â ¾Æ¹«³ª È£ÃâÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. °´Ã¼ÀÇ »ý¼º´ç½Ã ¿©·¯ºÐÀÌ new¿Í °°ÀÌ ¸í½ÃÇØ ÁÖ´Â °ÍÀÌ »ý¼ºÀÚ¸Þ¼µåÀÔ´Ï´Ù. ±× ¿ÜÀÇ °æ¿ì »ý¼ºÀÚ¸Þ¼µå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ÀÌ ¹æ¹ý ¹Û¿¡´Â ¾ø½À´Ï´Ù. µðÆúÆ® »ý¼ºÀÚ¸¦ È£ÃâÇÏ¿´Áö¸¸ µðÆúÆ® »ý¼ºÀÚ´Â ÀÚ½ÅÀÇ Å¬·¡½º ³»¿¡ ´Ù¸¥ »ý¼ºÀÚ¸¦ this¸¦ »ç¿ëÇØ¼ È£ÃâÇϰí ÀÖ½À´Ï´Ù.
±×·±µ¥ ¿Ö ÀÌ·¸°Ô º¹ÀâÇÑ ¹æ¹ýÀ» ÀÌ¿ëÇϰí ÀÖÀ»±î¿ä? ¿Ö ÀÚ½ÅÀÇ »ý¼ºÀÚ¸Þ¼µå¸¦ ÀÌ·¸°Ô º¹ÀâÇÏ°Ô È£Ãâ Çϰí ÀÖÀ»±î¿ä? ±× ´äÀº ¾Ë°í ³ª¸é º°·Î º¹ÀâÇÏÁö ¾Ê´Ù´Â °ÍÀÔ´Ï´Ù. ³ó´ãÀ̱¸¿ä. ÀÚ½ÅÀÇ »ý¼ºÀÚ¸¦ Àç ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. Ŭ·¡½º¸¦ ¸¸µé´Ù º¸¸é, »ó´çÈ÷ ¸¹Àº ÀÛ¾÷À» ÇϳªÀÇ »ý¼ºÀÚ¿¡¼ ó¸®Çß´Ù¸é ´Ù¸¥ »ý¼ºÀÚ¿¡¼µµ ´Ù½Ã ¸¹Àº ÀÛ¾÷À» ÇØ ÁÖ°Ô µË´Ï´Ù. ¿©·¯ºÐÀÌ Å¬·¡½º¸¦ µðÀÚÀÎÇÏ´Ù º¸¸é ÀÌ·¯ÇÑ Çö»óÀº ÀÚÁÖ ÀϾ´Ï´Ù. ¹°·Ð À̰ÍÀº »ý¼ºÀÚ Áߺ¹À» ÇÒ ¶§ ¹ß»ýÇÏ´Â ¹®Á¦Á¡ÀÔ´Ï´Ù. ±×·±µ¥ ÀÚ½ÅÀÇ »ý¼ºÀÚ¸Þ¼µå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¾ø°í, ÀÛ¾÷Àº Áߺ¹ µÈ´Ù¸é °´Ã¼ÁöÇâÀÇ ±âº» ¹ýÄ¢À» À§¹èÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¡¼ this¸¦ ÀÌ¿ëÇØ¼ »ý¼ºÀÚ¸Þ¼µå¸¦ È£Ãâ ÇÏ´Â ¹æ¹ýÀ» Á¦°øÇϰí ÀÖ´Â °ÍÀÔ´Ï´Ù. ¿©±â¼ °¡Àå Á¶½ÉÇØ¾ß ÇÏ´Â °ÍÀº »ý¼ºÀÚ¸Þ¼µå¿¡¼ ´Ù¸¥ »ý¼ºÀÚ¸Þ¼µå¸¦ È£Ãâ ÇÒ ¶§ »ý¼ºÀÚ¸Þ¼µå È£ÃâÀº Á¦ÀÏ ÀºÎºÐ¿¡ »ç¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
4.6.6 °á·Ð
thisÀÇ Æ¯Â¡
n °´Ã¼ Àڽſ¡ ´ëÇÑ ÂüÁ¶°ªÀ» °®½À´Ï´Ù.
n ¸Å°³º¯¼ö¿Í °´Ã¼ ÀÚ½ÅÀÌ °¡Áö°í ÀÖ´Â º¯¼öÀÇ À̸§ÀÌ °°À» °æ¿ì À̸¦ ±¸ºÐÇϱâ À§ÇØ ÀÚ½ÅÀÌ °¡Áö°í ÀÖ´Â º¯¼ö ¾Õ¿¡ this¸¦ »ç¿ëÇÕ´Ï´Ù.
n °´Ã¼ »ý¼ºÀÚ ³»¿¡¼ ´Ù¸¥ »ý¼ºÀÚ¸¦ È£ÃâÇϱâ À§ÇØ »ç¿ëÇÕ´Ï´Ù.
n °´Ã¼ Àڽſ¡ ´ëÇÑ ÂüÁ¶°ªÀ» ¸Þ¼Òµå¿¡ Àü´ÞÇϰųª ¸®ÅÏÇØ ÁÖ±â À§ÇØ »ç¿ëÇϱ⵵ ÇÕ´Ï´Ù.
n µðÀÚÀΟÀÓÀÇ this´Â °´Ã¼°¡ »ý¼ºµÇ¾îÁö´Â ¼ø°£¿¡ °´Ã¼º¯¼ö°¡ °¡Áö´Â °ªÀ» °®°Ô µË´Ï´Ù.
this¸¦ »ç¿ëÇÔÀ¸·Î½á, ¸ðÈ£ÇÏÁö ¾Ê°í Á»´õ ¸íÈ®ÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù1ºÎ ÀúÀÚ:ÃÖ¿µ°ü |