5.5 Upcasting°ú Downcasting
5.5.1 ´Ù¿î ij½ºÆÃ
´Ù¿î ij½ºÆÃÀ̶õ upcastingÇÑ °ÍÀ» ´Ù½Ã º¹±¸ ½ÃÄÑÁÖ´Â ÀÛ¾÷À» ÇÕ´Ï´Ù. ÀǿܷΠDowncastingÀº ½±°Ô ¼³¸íµÇ¾î Áú ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ downcastingÀ» ÇÒ ¶§ Á¤È®ÇÑ ÇüÀ¸·Î ´Ù¿î ij½ºÆÃÀ» ÇÏÁö ¾Ê´Â´Ù¸é ¹«Á¶°Ç ÀûÀ¸·Î ¿¡·¯¸¦ ¹ß»ý½Ãŵ´Ï´Ù. ÀÚ¹Ù °¡»ó ¸Ó½ÅÀº ij½ºÆÃÀÇ ¹®Á¦¸¦ °¡»ó¸Ó½ÅÀÇ Â÷¿ø¿¡¼ Á¡°ËÀ» Çϰí Àֱ⠶§¹®¿¡ ¾ÆÁÖ ½ÅÁßÇÏ°Ô Ä³½ºÆÃÀ» ÇÏ¿©¾ß ÇÕ´Ï´Ù.
5.5.2 Upcasting°ú DowncastingÀÇ ½ÇÁ¦ »ç¿ë
¾÷ij½ºÆÃ°ú ´Ù¿î ij½ºÆÃÀ» °¡Àå Àß ¼³¸í ÇØ ÁÙ ¼ö ÀÖ´Â ¿¹Á¦¸¦ Çѹø °ñ¶ó º¸¾Ò½À´Ï´Ù. ÀÌ ¿¹Á¦¸¸ÅÀ̳ª ij½ºÆÃÀ» Àß ¼³¸íÇØ ÁÙ ¼ö ÀÖ´Â °ÍÀº ¾ø´Â °Í °°½À´Ï´Ù. ¾ÆÁÖ ÁÖÀÇ ±í°Ô »ìÆì º¸½Ã±â ¹Ù¶ø´Ï´Ù.
UpDownCasting.java |
import java.util.Vector; public class UpDownCasting{ public static void main(String[] args){ String name = new String("È«±æµ¿"); Integer id = new Integer(1000); Vector v = new Vector(); v.addElement(name); v.addElement(id); Object obj1 = v.elementAt(0); Object obj2 = v.elementAt(1); String str = (String)obj1; Integer num = (Integer)obj2; System.out.println("À̸§:" + str+ " ¹øÈ£:" + num); String str2 = (String)v.elementAt(0); Integer num2 = (Integer)v.elementAt(1); System.out.println("À̸§:" + str2+ " ¹øÈ£:" + num2); } } |
C:\examples\5. Class for Polymorphism Java>javac UpDownCasting.java C:\examples\5. Class for Polymorphism Java>java UpDownCasting À̸§:È«±æµ¿ ¹øÈ£:1000 |
ÀÌ ¿¹Á¦¿¡¼ ¿ì¸®´Â Vector¸¦ »ç¿ëÇϱâ À§Çؼ ¸ÕÀú java.util.VectorŬ·¡½º¸¦ importÇϰí ÀÖ½À´Ï´Ù. ±×¸®°í Vector¸¦ ¸¸µé¾ú½À´Ï´Ù. Vector´Â °´Ã¼¸¦ Àá±ñ ´ãÀ» ¼ö ÀÖ´Â ÀúÀå¼Ò ¿ªÇÒÀ» ÇÏ´Â ¾ÆÁÖ ´Ü¼øÇÑ ³ðÀÔ´Ï´Ù. ÀÌ Vector¿¡ °´Ã¼¸¦ ³Ö°í »©´Â °ÍÀÌ ÀÌ ÇÁ·Î±×·¥¿¡¼ ¼³¸íÇÏ·Á°í ÇÏ´Â ºÎºÐÀÔ´Ï´Ù. ¿ì¼± Vector¿¡¼ »ç¿ëµÈ ¸â¹ö¸Þ¼µå¸¦ »ìÆìº¸±â·Î ÇϰڽÀ´Ï´Ù.
n public Object elementAt(int index)
n Returns the component at the specified index.
n public void addElement(Object obj)
n Adds the specified component to the end of this vector, increasing its size by one.
ÀÌ ¸Þ¼µåµéÀ» Àß °üÂûÇØ º¸¸é addElement´Â ObjectÇüÀ» ¸Å°³º¯¼ö·Î ³Ö¾î Áغñ ÁÖ°Ô µË´Ï´Ù. ±×¸®°í elementAt¸Þ¼µå´Â ObjectÇüÀ» ¸®ÅÏÇÏ°Ô µË´Ï´Ù. ÇÏÁö¸¸ ¿ì¸®´Â ½ÇÁ¦ ÇÁ·Î±×·¥¿¡¼ String°´Ã¼¿Í Integer°´Ã¼¸¦ ³Ö¾ú½À´Ï´Ù. ¾î¶»°Ô µÈ °ÍÀϱî¿ä? ¸ðµç Ŭ·¡½º´Â ObjectŬ·¡½º¸¦ ¹«Á¶°Ç ÀûÀ¸·Î »ó¼Ó ¹Þ±â ¶§¹®¿¡ ObjectÇüÀ¸·Î ¾÷ij½ºÆÃÀÌ °¡´ÉÇÕ´Ï´Ù. ±×·¡¼ ½ÇÁ¦ Vector°¡ °¡Áö°í ÀÖ´Â °ÍÀº ObjectÇüÀÔ´Ï´Ù. ±×¸®°í ¹ÛÀ¸·Î ³» º¸³¾¶§µµ ObjectÇüÀ¸·Î ¸®ÅÏÇϰí ÀÖ´Â °ÍÀÔ´Ï´Ù.
À§ÀÇ ±×¸²Àº ÇÁ·Î±×·¥¿¡¼ º¤ÅÍ¿¡ µ¥ÀÌÅͰ¡ »ðÀÔµÇ°í ±×¸®°í µ¥ÀÌÅ͸¦ °¡Á®¿À´Â ±¸Á¶¸¦ º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù. addElement¿¡ °´Ã¼¸¦ ÀÔ·ÂÇÏ´Â ¼ø°£ ¾÷ij½ºÆÃÀÌ ´ÙÀ½°ú °°ÀÌ ÀÏ¾î ³ª°í ÀÖ½À´Ï´Ù.
n Object obj = name; //½ºÆ®¸µÇüÀÇ °´Ã¼¸¦ ObjectÇüÀÇ °´Ã¼·Î ¾÷ij½ºÆÃ
n Object obj = id; //IntegerÇüÀÇ °´Ã¼¸¦ ObjectÇüÀÇ °´Ã¼·Î ¾÷ij½ºÆÃ
ÀÌ·¸°Ô ¸Å°³º¯¼ö¿¡ µé¾î°¡´Â ¼ø°£¿¡ ¾÷ij½ºÆÃÀ» ÇÏ´Â °ÍÀ» ÀÚÁÖ º¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×¸®°í ÀÔ·ÂÇÑ °´Ã¼µéÀ» ¾ò¾î ³»¸é ÀԷµǴ ¼ø°£ ¸ðµÎ ObjectÇüÀ¸·Î ¾÷ij½ºÆÃ µÇ¾ú±â ¶§¹®¿¡ ¸ðµÎ ObjectÇüÀÔ´Ï´Ù. ±×·¡¼ ´ÙÀ½°ú °°Àº ±¸¹®ÀÌ °¡´ÉÇÑ °ÍÀÔ´Ï´Ù.
n Object obj1 = v.elementAt(0);
n Object obj2 = v.elementAt(1);
±×¸®°í ÀÌ obj1°ú obj2¸¦ °Á¦ÀûÀ¸·Î ´Ù¿î ij½ºÆÃÀ» ÇÕ´Ï´Ù. À§ÀÇ ÇÁ·Î±×·¥¿¡¼ ´Ù¿î ij½ºÆÃÇÏ´Â ±¸¹®Àº ´ÙÀ½°ú °°½À´Ï´Ù.
n String str = (String)obj1;
n Integer num = (Integer)obj2;
º¤ÅÍ¿¡¼ °´Ã¼¸¦ ¾ò¾î ³»°í ±×¸®°í ´Ù¿î ij½ºÆÃÀ» µ¿½Ã¿¡ ÇÑ´Ù¸é ´ÙÀ½°ú °°Àº ±¸¹®À¸·Î ¹Ù²Ù¾î »ç¿ëÇÒ ¼ö µµ ÀÖ½À´Ï´Ù.
n String str2 = (String)v.elementAt(0);
n Integer num2 = (Integer)v.elementAt(1);
º¸Åë ÀÌ·¯ÇÑ ¹æ¹ýÀº °¡Àå ÀϹÝÀûÀÎ ±¸¹®À¸·Î ¾Ë°í ÀÖÁö¸¸ ¿ì¸®´Â ¾÷ij½ºÆÃ°ú ´Ù¿î ij½ºÆÃÀ» »ý°¢ÇÏÁö ¾Ê°í ±×³É »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù. ij½ºÆÃÀÇ °³³äÀ» ÀÌÇØÇϽðí À̰ÍÀ» »ç¿ëÇÏ½Å´Ù¸é ´õ¿í È¿°úÀûÀ¸·Î °´Ã¼¸¦ ´Ù·ê ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
5.5.3 °á·Ð
¿ì¸®´Â ÀÌ Àý¿¡¼ ´Ü¼øÈ÷ ¾÷ij½ºÆÃ°ú ´Ù¿î ij½ºÆÃÀ̶ó´Â °üÁ¡¿¡¼ °´Ã¼¸¦ ÇÒ´çÇÏ°í °´Ã¼¸¦ ¾ò¾î³»´Â °ÍÀ» ¾Ë¾Æ º¸¾Ò½À´Ï´Ù. ¾÷ij½ºÆÃ°ú ´Ù¿î ij½ºÆÃÀ» ÀÌÇØÇϱâ À§Çؼ´Â »ó¼Ó°ú ÀÎÅÍÆäÀ̽º, Ãß»óŬ·¡½º, ¸Þ¼µå ÀçÁ¤ÀÇ µî ¸¹Àº °³³äµéÀÌ ÇÊ¿äÇÕ´Ï´Ù. ³Ê¹« ¸¹Àº ºÎºÐµéÀÌ °ãÃÄ Àֱ⠶§¹®¿¡ À̰ÍÀ» ¼³¸íÇϱâ´Â ¾ÆÁÖ ±î´Ù·Ó½À´Ï´Ù¸¸ ¾ÕÀåµéÀÇ °³³äµéÀ» °¡Áö°í ÀÖ´Ù¸é ¿©·¯ºÐµéÀº ½±°Ô ÀÌÇØ ÇÏ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù1ºÎ ÀúÀÚ:ÃÖ¿µ°ü |