¼Ò¼³°°ÀºÀÚ¹Ù1ºÎ  5Àå. Class for Polymorphism  Upcasting°ú Downcasting  

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

À̸§:È«±æµ¿  ¹øÈ£: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ºÎ
ÀúÀÚ:ÃÖ¿µ°ü