¼Ò¼³°°ÀºÀÚ¹Ù1ºÎ  4Àå. Class for Java  super  

4.7 super

 

4.7.1 superÂüÁ¶º¯¼ö

super ÂüÁ¶º¯¼ö¶õ »ó¼Ó±¸Á¶¿¡¼­ µðÀÚÀΟÀÓ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â »óÀ§ Ŭ·¡½ºÀÇ ÂüÁ¶ º¯¼öÀÔ´Ï´Ù. »óÀ§ Ŭ·¡½º¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ ¹æ¹ýÀÔ´Ï´Ù.

 

4.7.2 super¸¦ ÀÌ¿ëÇÏ¿© »óÀ§ Ŭ·¡½º¸¦ ÂüÁ¶

¾Æ¹öÁöÀÇ Å¬·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Ò´Ù¸é ¾Æ¹öÁöŬ·¡½ºÀÇ ¸ðµç °ÍÀº ¾Æµé Ŭ·¡½º °ÍÀÌ µË´Ï´Ù. ¾Æµé Ŭ·¡½º¿¡¼­´Â ¾Æ¹öÁö °Íµµ ³» °ÍÀÌ¿ä, ³» °Íµµ ³» °ÍÀÌ´Ï this¶ó´Â Ű¿öµé »ç¿ë ÇØ¼­ ¾Æ¹öÁöÀÇ ¸â¹ö¿¡ Á¢±Ù ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð ¾Æ¹öÁöÀÇ publicÀ̳ª protectedÁ¢±Ù ÁöÁ¤ÀÚ¸¦ »ç¿ëÇÏ´Â ¸â¹ö¿¡¸¸ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

À̰ÍÀº ³Ê¹«³ª ´ç¿¬ÇÑ »ó¼Ó °³³äÀÔ´Ï´Ù. ¾Æ¹öÁö Ŭ·¡½º¿Í ¾Æµé Ŭ·¡½ºÀÇ »ó¼Ó°ü°è¿¡¼­ ÀçÁ¤ÀÇ ¸Þ¼­µå°¡ ÀÖ°í ¾Æµé Ŭ·¡½º ³»ºÎ¿¡¼­ ÀçÁ¤ÀÇ µÈ ¸Þ¼­µå¸¦ È£ÃâÇÑ´Ù¸é, ¹«Á¶°Ç ¾ÆµéÀÇ ÀçÁ¤ÀÇ ¸Þ¼­µå°¡ È£Ã⠵˴ϴÙ. ÀçÁ¤ÀÇ ÀÚü´Â ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ ¹«½ÃÇϰí Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·±µ¥ ½ÇÁ¦·Î´Â ÀçÁ¤ÀÇ µÈ ¸Þ¼­µå¿Í ¾Æ¹öÁöÀÇ ¹«½ÃµÇ¾îÁø ¸Þ¼­µå 2°³°¡ Á¸ÀçÇÕ´Ï´Ù. ¾Æµé ÀÔÀå¿¡¼­ ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ È£Ãâ ÇϰíÀÚ ÇÑ´Ù¸é ¾î¶»°Ô ÇÒ±î¿ä?

 

³ª»Û ¾ÆµéÀÌÁÒ. ÀÚ½ÅÀÌ ÀçÁ¤ÀÇÇÑ ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ È£Ãâ ÇÒ ¼ö ÀÖ°Ô ÇÒ ¸¸Å­ ¾Æ¹öÁö Ŭ·¡½º´Â ³Ê±×·¯¿ï±î¿ä? ¹«½ÃµÇ¾îÁø ¾Æ¹öÁöŬ·¡½ºÀÇ ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â ¹æ¹ýÀÌ ¹Ù·Î superÂüÁ¶º¯¼ö¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. super´Â this¿Í °°Àº ¿ø¸®·Î µ¿ÀÛ µÇ¾îÁý´Ï´Ù. ±×·¡¼­ superÀÚü´Â µðÀÚÀΟÀÓ¿¡ ¾Æ¹öÁö¸¦ ÂüÁ¶ÇÏ´Â À¯ÀÏÇÑ ÂüÁ¶º¯¼öÀÔ´Ï´Ù.

 

NewSon .java(super¸¦ Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦)

class NewFather{

             public void overrideFunc(){

                           System.out.println("¾Æ¹öÁöÀÇ ÇÔ¼ö");

             }

}

public class NewSon extends NewFather{

             public void overrideFunc(){

                           System.out.println("¾ÆµéÀÇ ÀçÁ¤ÀÇ ÇÔ¼ö");

             }

             public void testFunc(){

                           super.overrideFunc();

             }

             public static void main(String[] args){

                           NewSon s = new NewSon();

                           s.overrideFunc();//ÀçÁ¤ÀÇ µÈ ÇÔ¼öÈ£Ãâ

                           s.testFunc();//super¸¦ ÀÌ¿ëÇÑ ¾Æ¹öÁö È£Ãâ

             }

}

C:\examples\4. Class for Basic Java>javac NewSon.java

C:\examples\4. Class for Basic Java>java NewSon

¾ÆµéÀÇ ÀçÁ¤ÀÇ ÇÔ¼ö

¾Æ¹öÁöÀÇ ÇÔ¼ö

 

»ó¼ÓÀ» ¾Æµé Ŭ·¡½º°¡ ¹Þ¾Ò´Ù°í ÇÑ´Ù¸é ¾Æ¹öÁö ¹«½ÃÇϱâ Áï, ƯÁ¤ ¸Þ¼­µå¸¦ OverridingÇϰí ÀÖ´Â °ÍÀÔ´Ï´Ù. ´ç¿¬È÷ ¾Æ¹öÁö Ŭ·¡½ºÀÇ ¸Þ¼­µå´Â ¾ÆµéŬ·¡½º¿Í °°Àº À̸§ÀÇ ¸Þ¼­µå°¡ Á¸ÀçÇϱ⠶§¹®¿¡ ¾ÆµéÀÌ ÀÌ ¸Þ¼­µå¸¦ »ç¿ëÇÏ¸é ¹«½ÃµÇ¾î Áý´Ï´Ù. ±×·¸´Ù¸é ¹«½ÃµÇ¾îÁø ¾Æ¹öÁöŬ·¡½ºÀÇ ¸Þ¼­µå¸¦ »ç¿ëÇÏ°í ½Í´Ù¸é ¾î¶»°Ô ÇÒ±î¿ä? ¹æ¹ýÀÌ ¾ø½À´Ï´Ù. ¹°·Ð ANSI C++¿¡¼­µµ À̰Ϳ¡ ´ëÇÑ ÇØ°áÃ¥À» Á¦½ÃÇØ ÁÖ°í ÀÖÁö¸¸ ÀÚ¹Ù¿¡¼­´Â super¶ó´Â Ű¿öµé Á¦°øÇØ ÁÖ´Â °ÍÀÔ´Ï´Ù.

 

             public void testFunc(){

                           super.overrideFunc();

             }

 

testFunc()¸Þ¼­µå¿¡¼­ super¸¦ ÀÌ¿ëÇÏ¿© ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù. ÀÚ½ÅÀÇ ¸Þ¼­µå¿Í ¾Æ¹öÁöÀÇ ¸Þ¼­µå¸¦ ±¸ºÐÇϱâ À§Çؼ­ À̰ÍÀ» »ç¿ëÇÏ´Â °ÍÀÌÁö º°´Ù¸¥ °ÍÀº ¾ø½À´Ï´Ù

 

4.7.3 super¸¦ ÀÌ¿ëÇÑ »ý¼ºÀÚ¸Þ¼­µå È£Ãâ

»ó¼ÓÀ» ¹Þ¾ÒÀ» °æ¿ì ¾Æ¹öÁöÀÇ Å¬·¡½ºÀÇ »ý¼ºÀÚ¸Þ¼­µå°¡ ¸Å°³º¯¼ö¸¦ °¡Áö°í ÀÖ´Ù¸é ¾î¶»°Ô µÉ±î¿ä? Àß »ý°¢ÇØ º¸¸é ¾î·µç ¾Æ¹öÁöÀÇ Å¬·¡½ºÀÇ »ý¼ºÀÚ¸Þ¼­µå°¡ È£Ãâ µÈ ÈÄ¿¡ ¾ÆµéÀÇ »ý¼ºÀÚ¸Þ¼­µå°¡ È£ÃâµÇ´Â °ÍÀº ´ç¿¬ÇÑ ÀÏÀÔ´Ï´Ù. ±×·¸´Ù¸é ¾ÆµéÀÌ »ó¼ÓÀ» ¹Þ¾ÒÀ» °æ¿ì ¾Æ¹öÁöÀÇ »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö´Â ´©°¡ ³Ö¾î ÁÙ ¼ö ÀÖÀ»±î¿ä? ¾Æ¹öÁöÀÇ »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö¸¦ ³Ö¾îÁÖÁö ¾Ê¾Æµµ ¾Æ¹öÁöÀÇ »ý¼ºÀÚ°¡ È£Ãâ °¡´ÉÇÒ±î¿ä?

 

¾Æ¹öÁöŬ·¡½ºÀÇ »ý¼ºÀÚ¸Þ¼­µå°¡ ¸Å°³º¯¼ö¸¦ °¡Áö°í ÀÖ´Ù¸é ¾Æµé ÀÔÀå¿¡¼­´Â ¾Æ¹öÁöÀÇ »ý¼ºÀÚ¸Þ¼­µåÀÇ ¸Å°³º¯¼ö¸¦ ³Ö¾îÁÖ¾î¾ß ÇÒ Àǹ«°¡ ÀÖ´Ù. À̰ÍÀº ¾ÆµéÀÌ ¾Æ¹öÁö¸¦ »ó¼Ó ¹Þ¾Ò±â ¶§¹®À̸ç ÀÚµ¿À¸·Î ¾ÆµéÀÌ »ý¼ºµÇ¾îÁú ¶§ ¾Æ¹öÁöÀÇ »ý¼ºÀÚ¸Þ¼­µå¸¦ È£ÃâÇϱ⠶§¹®ÀÌ´Ù.

 

À̰ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù. ¹«Á¶°ÇÀûÀ¸·Î, Àý´ëÀûÀ¸·Î, »ý¼ºÀÚ¿¡ ¸Å°³º¯¼ö°¡ Á¸ÀçÇÑ´Ù¸é »ý¼ºÀÚÀÇ ¸Å°³º¯¼öÀÇ Çü°ú °³¼ö¸¦ ¸ÂÃß¾î ÁÖ¾î¾ß¸¸ È£Ãâ °¡´ÉÇÕ´Ï´Ù. »ó¼ÓÀ» ¾Æµé Ŭ·¡½º°¡ ¹Þ¾Æ ¹ö¸° »óÅÂÀÌ°í ±×¸®°í ¾ÆµéÀº ¾Æ¹öÁöÀÇ »ý¼ºÀÚ¿¡°Ô ¸Å°³º¯¼ö¸¦ ³Ö¾îÁÙ Àǹ«°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. À̰ÍÀ» ¹«½ÃÇÑ´Ù¸é ¾ÆµéÀº ¸¸µé¾îÁú ¼ö ¾ø½À´Ï´Ù.

 

SuperSon.java(this Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦)

class SuperFather{

             private String name;

             public SuperFather(String name){

                           this.name = name;        

                           System.out.println("name:" + name);

             }

}

public class SuperSon extends SuperFather{

             public SuperSon(String str){

                           super(str);

             }

             public static void main(String[] args){

                           SuperSon s = new SuperSon("»ó¼ÓÀÇ super Test");

             }

}

C:\examples\4. Class for Basic Java>javac SuperSon.java

C:\examples\4. Class for Basic Java>java SuperSon

name:»ó¼ÓÀÇ super Test

 

4.7.4 °á·Ð



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù1ºÎ
ÀúÀÚ:ÃÖ¿µ°ü