4.4 Inheritance
4.4.1 »ó¼ÓÀ̶õ?
»ó¼ÓÀ̶õ ±âÁ¸ÀÇ ¸¸µé¾î µÐ Ŭ·¡½º¸¦ ´Ù½Ã ÀÌ¿ëÇÒ ¹æ¹ýÀ» Á¦°øÇϰí ÀÖ½À´Ï´Ù. »ó¼ÓÀº ±âÁ¸ ±¸Á¶Ã¼¿¡¼´Â ¾ø´ø °³³äÀ¸·Î Ŭ·¡½º¿¡¼¸¸ Åë¿ëµÇ´Â °³³äÀÔ´Ï´Ù. C¿Í °¡Àå Àß ±¸º° µÇ´Â ºÎºÐÀ̱⵵ ÇÏÁö¸¸ »ó¼ÓÀÇ °³³äÀº °´Ã¼ÁöÇâÀÇ ¸¹Àº ºÎºÐ¿¡¼ »ó´çÈ÷ ³ÇØÇÑ °³³äµéÀ» ³»Æ÷Çϰí ÀÖ½À´Ï´Ù.
ÀÚ¹Ù¿¡¼´Â ¸¸µé¾îÁø Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ¿© »õ·Î¿î Ŭ·¡½º·Î È®ÀåÇÒ ¶§ extends¶ó´Â Ű¿öµå¸¦ »ç¿ëÇÕ´Ï´Ù. »ç½Ç ÀÚ¹Ù¿¡¼ extends°¡ ÀüºÎ¶ó ÇØµµ °ú¾ðÀÌ ¾Æ´Ò °ÍÀÔ´Ï´Ù. ÀÚ¹Ù¿¡¼ »ó¼ÓÀ» »©¸é ³²´Â °ÍÀÌ ¾øÁÒ. ÀÚ¹ÙÀÇ ´Ù¾çÇÑ ¶óÀ̺귯¸®¸¦ »ó¼Ó ¹ÞÀ» ¼ö ÀÖ´Ù´Â ÀåÁ¡¶§¹®¿¡ ¿ì¸®´Â ÀÚ¹Ù¸¦ ¼±È£ÇÏ´ÂÁöµµ ¸ð¸¨´Ï´Ù. ±×·¸´Ù¸é »ó¼ÓÀº ¹«¾ùÀϱî¿ä? ÇÏÀ§Å¬·¡½º°¡ »óÀ§ Ŭ·¡½º¸¦ »ó¼Ó ¹Þ¾ÒÀ» ¶§ ÀÏ´Ü ÇÏÀ§Å¬·¡½º´Â »óÀ§Å¬·¡½ºÀÇ ¸ðµç ±ÇÇÑÀ» °®°Ô µË´Ï´Ù.
Áï, »óÀ§Å¬·¡½º¿¡¼ ¸¹Àº ÇÁ·Î±×·¥À» ÇØ µÎ¾ú°í ¸¹Àº ´É·ÂÀ» °¡Áö°í ÀÖ´Ù¸é À̰ÍÀ» ¸ðµÎ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. °´Ã¼ÁöÇâ±â¹ý¿¡¼ Ŭ·¡½º³»¿¡ ¸Þ¼µåÀÇ »ðÀÔº¸´Ùµµ ´õ ¾öû³ ±â´ÉÀÌ ¹Ù·Î »ó¼ÓÀÇ °³³äÀÔ´Ï´Ù. ÀÌ¹Ì ¸¸µé¾îÁø Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ¿© »õ·Î¿î Ŭ·¡½º¸¦ »ý¼ºÇÑ´Ù´Â ¸» º¸´Ù´Â ¸¸µé¾îÁ® Àִ Ŭ·¡½º¿¡¼ »ó¼ÓÀ» ¹Þ´Â ¼ø°£ ÇöÀçÀÇ Å¬·¡½º°¡ °ð »óÀ§Å¬·¡½º¿¡¼ Ãâ¹ßÇÑ´Ù°í »ý°¢ÇÏ´Â °ÍÀÌ ´õ ÀÌÇØ°¡ ½±°Ú±º¿ä. ¿¹¸¦ µé¸é java.awt.FrameÀ» »ó¼Ó¹Þ¾Æ »õ·Î¿î Ŭ·¡½ºÀÎ HelloFrameŬ·¡½º¸¦ ¸¸µé¾ú´Ù¸é ¾Æ·¡¿Í °°ÀÌ ¸¸µé¾î Áý´Ï´Ù.
public class HelloFrame extends Frame{ // Ŭ·¡½º ³»¿¡ ÀÛ¾÷ } |
4.4.2 »ó¼ÓÀÇ ±âº» ¿¹
»ó¼Ó¿¡ °ü·ÃµÈ Ŭ·¡½º¸¦ Á÷Á¢ ¸¸µé¾î º¸°Ú½À´Ï´Ù. ÀÏ´Ü ÇҾƹöÁö Ŭ·¡½º¸¦ ¸¸µéÁÒ. ÇҾƹöÁö Ŭ·¡½º¸¦ »ó¼Ó ¹Þ¾Æ ¾Æ¹öÁö Ŭ·¡½º¸¦ ¸¸µé°í ¾Æ¹öÁöŬ·¡½º¸¦ ÀÌ¿ëÇÏ¿© °´Ã¼¸¦ ¸¸µé°í ¾Æ¹öÁö °´Ã¼¿¡¼ ÇҾƹöÁö ¼Ò¼ÓÀÇ ¸Þ¼µåµé È£ÃâÇØ º¸ÁÒ. ÀÌ·¸°Ô µÈ´Ù¸é ¾Æ¹öÁö°¡ ÇҾƹöÁö °ÍÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ µÇ°ÚÁÒ. Áö±Ý ¼³¸íÇÑ ¿¹Á¦´Â ¾Æ·¡¿Í °°½À´Ï´Ù.
GrandFather.java |
public class GrandFather{ public GrandFather(){ System.out.println(" I am GrandFather "); } public void sayGrandNumber(){ for(int i =0; i<10; i++){ System.out.print( i + "\t"); } } } |
Father.java |
public class Father extends GrandFather { public Father(){ System.out.println(" I am Father "); } public void sayFatherNumber(){ for(int i =0; i<20; i++){ System.out.print( i + "\t"); } } } |
InheritanceTest.java |
public class InheritanceTest { public static void main(String[] args) { Father f = new Father(); System.out.println("GrandFatherÀÇ sayGrandNumber"); f.sayGrandNumber(); // ÇҾƹöÁöÀÇ ¸Þ¼µå È£Ãâ System.out.println("FatherÀÇ sayFatherNumber"); f.sayFatherNumber(); // ¾Æ¹öÁö ÀÚ½ÅÀÇ ¸Þ¼µå È£Ãâ } } |
C:\examples\4. Class for Basic Java>javac GrandFather.java C:\examples\4. Class for Basic Java>javac Father.java C:\examples\4. Class for Basic Java>javac InheritanceTest.java C:\examples\4. Class for Basic Java>java InheritanceTest
I am GrandFather I am Father GrandFatherÀÇ sayGrandNumber 0 1 2 3 4 5 6 7 8 9 FatherÀÇ sayFatherNumber 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
À§ÀÇ ¿¹Á¦¿¡¼ FatherŬ·¡½º´Â GrandFatherŬ·¡½º¸¦ »ó¼ÓÇϰí ÀÖ½À´Ï´Ù. GrandFather¸¦ »ó¼Ó ¹Þ´Â ¼ø°£ FatherŬ·¡½º´Â GrandFatherŬ·¡½ºÀÇ ¸ðµç °ÍÀ» °¡Áö°í ½ÃÀÛÇÑ´Ù°í º¸¸é ¿ÇÀ» °ÍÀÔ´Ï´Ù. FatherŬ·¡½º¸¦ Å×½ºÆ®Çϱâ À§Çؼ InheritanceTestŬ·¡½ºÀÇ main¸Þ¼µå¿¡¼ Father °´Ã¼ f¸¦ »ý¼ºÇϰí Father°´Ã¼´Â GrandFatherŬ·¡½ºÀÇ °ÍÀ» ÀÚ½ÅÀÇ °Íó·³ È£Ãâ Çϰí ÀÖ½À´Ï´Ù. À̰ÍÀÌ ¹Ù·Î »ó¼ÓÀÇ ÀåÁ¡ÀÔ´Ï´Ù. »ý¼ºÀÚ¸Þ¼µå¸¦ Á¦¿ÜÇÑ´Ù¸é FatherŬ·¡½º´Â ¾Æ¹öÁöÀÇ Å¬·¡½ºÀÇ ¸Þ¼µå¿Í ÀÚ½ÅÀÇ ¸Þ¼µå 2°³¸¦ °¡Áö°Ô µË´Ï´Ù. ´ÙÀ½Àº À§ÀÇ ÇÁ·Î±×·¥ÀÇ ±¸Á¶¸¦ º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.
¿©±â¼ Àá±ñ Á» °Å½½¸®´Â°Ô ÀÖÁÒ. ¹Ù·Î »ý¼ºÀÚ¸Þ¼µåÀÔ´Ï´Ù. »ó¼ÓÀº »óÀ§ Ŭ·¡½ºÀÇ ¸ðµç °ÍÀ» ´Ù ¹Þ´Â´Ù¸é »ý¼ºÀÚ¸Þ¼µåµµ »ó¼Ó ¹ÞÀ»±î¿ä? ¿©±â¼´Â ´äÀº NoÀÔ´Ï´Ù. »ý¼ºÀÚ¸Þ¼µå´Â »ó¼Ó ÇÏÁö ¾Ê½À´Ï´Ù.
¾Æ¹öÁö°¡ ÇҾƹöÁö¸¦ »ó¼Ó ¹Þ¾Ò±â ¶§¹®¿¡ ÇҾƹöÁöÀÇ ¸Þ¼µå¸¦ ¾Æ¹öÁö°¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ °á°ú¿¡¼ ÀÌ»óÇÑ ºÎºÐÀ» ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹Ù·Î »ý¼ºÀÚ¸Þ¼µåÀÇ È£ÃâÀÔ´Ï´Ù. ¾Æ¹öÁö °´Ã¼¸¦ ¸¸µå´Âµ¥ ÇҾƹöÁöÀÇ »ý¼ºÀÚ¸Þ¼µåµµ È£Ã⠵ǰí ÀÖ½À´Ï´Ù. ÀÌ»óÇÑ ÀÏÀÌÁÒ. À̰ÍÀº ÀÌ·¸°Ô ¼³¸íÇÒ ¼ö ÀÖ½À´Ï´Ù. »ó¼Ó°úÁ¤¿¡¼ »óÀ§ ·¹º§ÀÇ Å¬·¡½ºÀÇ ¸Þ¸ð¸®°¡ »ý¼ºµÇÁö ¾Ê´Â´Ù¸é ÀÚ½Ä ·¹º§ÀÇ ¸Þ¸ð¸®´Â »ý¼ºÇÒ ¼ö ¾ø´Ù. ±×·¸±â ¶§¹®¿¡ FatherŬ·¡½º·Î °´Ã¼¸¦ ¸¸µé¾ú´Ù¸é FatherÀÌ »ó¼Ó ¹ÞÀº ¸ðµç »óÀ§ ·¹º§ÀÇ »ý¼ºÀÚ¸Þ¼µå°¡ Â÷·Ê´ë·Î È£Ã⠵ǾîÁö°í Á¦ÀÏ ¸¶Áö¸·¿¡ ÀÚ½ÅÀÇ °ÍÀÌ È£Ã⠵ǾîÁý´Ï´Ù. ÇҾƹöÁö°¡ ¾ø´Ù¸é ¾Æ¹öÁöµµ ¾ø°ÚÁÒ. ±×·¡¼ ÇҾƹöÁö »ý¼ºÀÚ°¡ È£Ãâ µÈ ÈÄ. ¾Æ¹öÁöÀÇ »ý¼ºÀÚ°¡ È£Ã⠵˴ϴÙ.
¿©±â¼ ÇҾƹöÁö, ¾Æ¹öÁö, ¾Æµé±îÁö 3´Ü°è·Î ³ª´©¾î¼ »ó¼ÓÇØµµ ÀÌ ±ÔÄ¢À» ¾î±âÁö´Â ¾Ê½À´Ï´Ù. ¾Æ·¡´Â 3´Ü°èÀÇ ±¸Á¶¿Í ÇÁ·Î±×·¥ÀÇ ¿¹ÀÔ´Ï´Ù.
Child.java(3´Ü°è»ó¼ÓÀ» À§ÇÑ ¾Æµé Ŭ·¡½º) |
public class Child extends Father { public Child(){ System.out.println(" I am Child"); } public void sayChildNumber(){ for(int i =0; i<30; i++){ System.out.print( i + "\t"); } } } |
InheritanceTest2.java(3´Ü°è »ó¼ÓÀ» À§ÇÑ ¿¹Á¦) |
public class InheritanceTest2 { public static void main(String[] args) { Child c = new Child(); System.out.println("GrandFatherÀÇ sayGrandNumber"); c.sayGrandNumber(); System.out.println("FatherÀÇ sayFatherNumber"); c.sayFatherNumber(); System.out.println("Child sayChildNumber"); c.sayChildNumber(); } } |
C:\examples\4. Class for Basic Java>javac Child.java C:\examples\4. Class for Basic Java>javac InheritanceTest2.java C:\examples\4. Class for Basic Java>java InheritanceTest2 I am GrandFather I am Father I am Child GrandFatherÀÇ sayGrandNumber 0 1 2 3 4 5 6 7 8 9 FatherÀÇ sayFatherNumber 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Child sayChildNumber
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
»ó¼Ó´Ü°è°¡ ´Ã¾î³ª´õ¶óµµ ±âº»ÀûÀÎ ¹ýÄ¢Àº ¶È°°½À´Ï´Ù. ¸Þ¸ð¸®´Â ÃÖ»óÀ§ Ŭ·¡½ººÎÅÍ Â÷·Ê´ë·Î »ý¼ºµÇ¾îÁö¸ç ChildŬ·¡½º´Â ÃÖÇÏÀ§ Ŭ·¡½ºÀε¥µµ ±× »óÀ§ÀÇ Å¬·¡½º¿¡ ¼ÓÇØÀÖ´Â ¸Þ¼µå¸¦ ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
4.4.3 »ý¼ºÀÚ È£Ãâ ¼ø¼
¾î¶² Ŭ·¡½º°¡ »óÀ§Å¬·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Ò´Ù¸é ´ç¿¬È÷ »óÀ§ Ŭ·¡½ºÀÇ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. »óÀ§Å¬·¡½ºÀÇ ¸Þ¸ð¸®¸¦ °¡Áö°í Àֱ⠶§¹®¿¡ ¿ì¸®´Â »óÀ§Å¬·¡½º¸¦ »ó¼Ó ¹Þ¾Ò´Ù°í ÇÕ´Ï´Ù. ÀÌ Áõ°Å´Â ÇÏÀ§ Ŭ·¡½º¸¦ »ý¼ºÇßÀ» °æ¿ì »óÀ§Å¬·¡½ºÀÇ »ý¼ºÀÚ¸Þ¼µåºÎÅÍ Â÷·Ê´ë·Î È£ÃâÇÏ´Â °ÍÀ» º¼ ¶§ Á¤È®ÇÏ°Ô ¾Ë ¼ö ÀÖ½À´Ï´Ù. Áï »óÀ§ Ŭ·¡½ºÀÇ ¸Þ¸ð¸®¸¦ ÇÏÀ§ Ŭ·¡½º°¡ Æ÷ÇÔÇÏ´Â ¹æ¹ýÀº ÇÏÀ§Å¬·¡½º¸¦ »ý¼ºÇÏ¿´À» ¶§ »óÀ§Å¬·¡½ºÀÇ ¸Þ¸ð¸®¸¦ ÀÚ½ÅÀÌ °®±â À§Çؼ ÀÚüÀûÀ¸·Î »óÀ§Å¬·¡½ºÀÇ ¸Þ¸ð¸®¸¦ »ý¼º½Ã۱â´Â ¹æ¹ýÀ» ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ÇÏÀ§ Ŭ·¡½º´Â »óÀ§Å¬·¡½ºÀÇ ¸ðµç ¸Þ¸ð¸®¸¦ Â÷·Ê´ë·Î È®º¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. À§ÀÇ ¿¹¿¡¼ »ý¼ºÀÚÀÇ È£Ãâ ¼ø¼¸¦ ³ªÅ¸³»¸é ¾Æ·¡ÀÇ ±×·¥°ú °°½À´Ï´Ù.
4.4.4 Áߺ¹»ó¼Ó
ÀÚ¹Ù¿¡¼ Áߺ¹»ó¼ÓÀº Çã¿ëÇÏÁö ¾Ê½À´Ï´Ù. 2°³ÀÇ Å¬·¡½º·ÎºÎÅÍ µ¿½Ã¿¡ »ó¼ÓÇÒ ¼ö ¾ø´Ù´Â ¶æÀÔ´Ï´Ù. Ç¥ÁØ C++¿¡¼´Â Áߺ¹»ó¼ÓÀ» Çã¿ëÇÏÁö¸¸ µ¿½Ã¿¡ ¿©·¯ °³¸¦ »ó¼ÓÇÒ ¶§ÀÇ ¹®Á¦Á¡¶§¹®¿¡ ÀÚ¹Ù¿¡¼´Â À̰ÍÀ» ¹èÁ¦½ÃÄ×´Ù°í ÇÕ´Ï´Ù. ÀÚ¹Ù¿¡¼´Â Áߺ¹»ó¼ÓÀ» Çã¿ëÇϰí ÀÖÁö´Â ¾ÊÁö¸¸ Æí¹ýÀ¸·Î À̸¦ »ç¿ëÇϰí ÀÖ´Ù. ±âÁ¸ÀÇ Áߺ¹»ó¼ÓÀÇ ¹®Á¦Á¡À» ¾ø¾Ö°í ±×¸®°í ȹÀÏÀûÀ¸·Î »ç¿ëÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀÌ ¹Ù·Î interface¶ó°íÇϴµ¥ interface´Â 5Àå¿¡¼ ´Ù·çµµ·Ï ÇϰڽÀ´Ï´Ù.
4.4.5 private°ú publicÀÇ »ó¼Ó°ü°è
private°ú publicÀº »ó¼Ó°ü°è¸¦ ³íÇÒ ¶§ ¿ì¸®´Â ½ÇÇà ŸÀÓ¿¡ ÇÑÇÏ¿© Á¢±ÙÁ¦¾î¸¦ ¼³¸íÇÏ¿´½À´Ï´Ù. Á¢±ÙÁ¦¾î´Â ½ÇÇàŸÀÓ°ú µðÀÚÀΟÀÓ µÎ ºÐ·ù·Î ³ª´µ¸ç Á¢±ÙÁ¦¾î ºÎºÐ¿¡¼´Â °´Ã¼ÀÇ ¸Þ¸ð¸®¸¦ »ý¼ºÇÑ ÈÄÀÇ Á¢±ÙÁ¦¾îÀÎ ½ÇÇàŸÀÓ Á¢±ÙÁ¦¾î¸¸ ¹è¿ü½À´Ï´Ù. Áö±ÝÀÌ ¹Ù·Î Ŭ·¡½º¸¦ µðÀÚÀÎÇϴ ŸÀÓÀÇ Á¢±ÙÁ¦¾î¸¦ ³íÇÒ ¶§ÀÎ °Í °°½À´Ï´Ù.
Áï, »ó¼Ó°ü°è¿¡¼ µðÀÚÀΟÀÓÀÇ Á¢±ÙÁ¦¾î°¡ ÀÌ¿ëµÈ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÚ ±×·¸´Ù¸é Á¤È®ÇÏ°Ô »ó¼Ó¿¡¼ÀÇ Á¢±ÙÁ¦¾î ¹®Á¦´Â ¾î¶² °ÍÀÎÁö ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¸ÕÀú ÀÌ·± Áú¹®ºÎÅÍ ´øÁ® º¸ÁÒ. (½¬¿î ¼³¸íÀ» À§ÇÏ¿© »óÀ§Å¬·¡½º¸¦ ¾Æ¹öÁö¶ó ºÎ¸£°í ÇÏÀ§Å¬·¡½º¸¦ ¾ÆµéÀ̶ó ºÎ¸£°Ú½À´Ï´Ù. ¾ÆµéÀº ´ç¿¬È÷ ¾Æ¹öÁö¸¦ »ó¼ÓÇϰí ÀÖ´Â »óÅÂÀÔ´Ï´Ù.)
n »ó¼ÓÀ» ÇÑ´Ù¸é ¾Æ¹öÁöÀÇ private ¸â¹öÇʵå¿Í ¸â¹ö¸Þ¼µå¸¦ ¾ÆµéÀÌ ¹°·Á ¹Þ½À´Ï´Ù. ÀÌ ¶§ ¾ÆµéÀº ¾Æ¹öÁöÀÇ private¸â¹ö¸¦ ÀÚ½ÅÀÇ ¸â¹öó·³ ¸¶À½´ë·Î Á¢±Ù ÇÒ ¼ö ÀÖÀ»±î¿ä?( ÈùÆ®´Â publicÀ̶ó¸é ¿ÏÀüÈ÷ ÀÚ½ÅÀÇ °Í°ú ¶È°°ÀÌ ´Ù·ê ¼ö ÀÖ½À´Ï´Ù.)
ÀÌ Áú¹®¿¡ ´ëÇÑ ÇØ´äÀº Çѹø privateÀº ¿µ¿øÇÑ privateÀ̶ó´Â °ÍÀÔ´Ï´Ù. ¾ÆµéÀÌ ¾Æ¹öÁö·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ¾Ò´Ù¸é ¾Æ¹öÁöÀÇ °ÍÀº ³»°Í, ³»°Íµµ ³»°ÍÀ̶ó´Â ¸íÁ¦°¡ Åë¿ëµË´Ï´Ù. ÇÏÁö¸¸ ¾Æ¹öÁöÀÇ ¸¶Áö¸· ³²Àº ÀÚÁ¸½ÉÀÎ private¸¸ÅÀº Á÷Á¢Á¢±ÙÀ» ºÒÇãÇÕ´Ï´Ù.
MyFather.java |
public class MyFather { public String name; private String nickname; public MyFather(){ name ="À§´ëÇÑ ¾Æ¹öÁö"; nickname="»±ÄÚ"; } public String getNickName(){ return nickname; } } |
Son.java |
public class Son extends MyFather{ public void sayFatherNames(){ System.out.println(name); System.out.println(nickname); } public static void main(String[] args){ Son s = new Son(); s.sayFatherNames(); } } |
C:\examples\4. Class for Basic Java>javac MyFather.java C:\examples\4. Class for Basic Java>javac Son.java Son.java:5: nickname has private access in MyFather
System.out.println(nickname); ^ 1 error |
ÀÌ ¿¹Á¦´Â ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù. ¾Æ¹öÁöÀÇ privateÀ» ¸¶À½´ë·Î »ç¿ëÇÏ·Á´Ù ÄÄÆÄÀϵµ ÇÏÁö ¸øÇϰí ÀÖ½À´Ï´Ù. ¾Æ¹öÁöÀÇ nickname¸â¹öÇʵå´Â privateÀε¥ À̸¦ ¾ÆµéÀÌ ¸¶À½´ë·Î Á¢±ÙÇÏ´Â °ÍÀº ¿À·ùÀÔ´Ï´Ù. ÄÄÆÄÀÏ ¿¡·¯ÀÔ´Ï´Ù. ÇÏÁö¸¸ nameÀ̶ó´Â pubic¸â¹öÇʵå´Â ¸¶À½´ë·Î Á¢±ÙÇϰí ÀÖ½À´Ï´Ù. ¾ÆµéÀÇ Å¬·¡½º¸¦ µðÀÚÀÎ ÇÒ ¶§ ¸¶Ä¡ ÀÚ½ÅÀÇ ¸â¹ö º¯¼öó·³ ÀÌ¿ëÇϰí ÀÖ½À´Ï´Ù. ÇöÀç ¼³¸íÇϰí ÀÖ´Â °ÍÀº »ó¼ÓÀÇ °ü°è¿¡¼ ³ªÅ¸³ª´Â µðÀÚÀΟÀÓÀÇ Á¢±ÙÁ¦¾îÀÔ´Ï´Ù. Çѹø privateÀº ¿µ¿øÇÑ privateÀÔ´Ï´Ù. privateÀÇ Á¢±ÙÁ¦¾î´Â staticÁ¢±Ù, »ó¼Ó°ü°è, ½ÇÇàŸÀÓÀÇ Á¢±ÙÁ¦¾î ¸ðµç °÷¿¡ ÇØ´ç ±× ±ÔÄ¢À» Áöŵ´Ï´Ù. Áï, privateÀº ¿¹¿Ü°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.
±×·¸´Ù¸é ¾Æ¹öÁöÀÇ private¿¡ ¾î¶»°Ô Á¢±Ù ÇÒ ¼ö ÀÖÀ»±î¿ä? ³Ê¹«³ªµµ ¸ÍÇÑ Áú¹®ÀÌÁÒ. privateÀº public¸Þ¼µå¸¦ ÅëÇØ¼¸¸ Á¢±Ù ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´õ ÀÌ»ó À̰ÍÀº ³íÇÏÁö ¾Ê¾Æµµ »·ÇÑ À̾߱â ÀÔ´Ï´Ù. ÀÚ ±×·¸´Ù¸é ÀÌ·± Áú¹®À» ´Ù½Ã ´øÁ®º¸ÁÒ.
n ¾Æ¹öÁöÀÇ ¸â¹ö´Â ½ÇÇà ŸÀÓ¿¡´Â privateÀÌ¸é¼ ¾Æµé¿¡°Ô´Â ¿ÏÀüÇÑ publicÀ̰íÀÚÇÕ´Ï´Ù. À̰ÍÀÌ ºÎ¸ðÀÇ ¸¶À½ ¾Æ´Ï°Ú½À´Ï±î? ÀÌ·¯ÇÑ ¹æ¹ýÀÌ ÀÚ¹Ù¿¡ Á¸ÀçÇÒ±î¿ä?
´äÀº ¿¹ÀÔ´Ï´Ù. À§ÀÇ Áú¹®Àº °´Ã¼ÀÇ ¸Þ¸ð¸®¸¦ »ý¼ºÇÑ ÈÄ Á¡(.)Âï°í Á¢±Ù ÇÒ ¶§´Â ¿Ïº®ÇÑ prviateÀÌ¸é¼ »ó¼Ó°ü°èÀÇ Å¬·¡½º µðÀÚÀΟÀÓ¿¡´Â ¿Ïº®ÇÑ publicÀ̰íÀÚ ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. À̸¦ ¹æ¹ý·ÐÀ» Á¦°øÇϱâ À§Çؼ ¾ÆÁ÷ ¼³¸íÇÏÁö ¾ÊÀº protectedÁ¢±ÙÁöÁ¤ÀÚ°¡ Á¸ÀçÇÕ´Ï´Ù.
n À§ÀÇ ¿¹Á¦¿¡¼ privateÀ» protected·Î °íÄ£´Ù¸é ÀÌ ¿¹Á¦´Â ¾ÆÁÖ ¸ÚÁö°Ô µ¿ÀÛ ÇÒ °ÍÀÔ´Ï´Ù.
°£´ÜÇÏ°Ô ¼³¸íÀ» ÇßÁö¸¸ ´Ù½Ã ¼³¸íÀ» ÇÑ´Ù¸é protected ´Â »ó¼ÓÀÇ °ü°è¿¡¼ ³ª¿Â´Ù. protected´Â private°ú ¶È°°´Ù. ¿ÜºÎ¿¡¼´Â Á¢±Ù ºÒ°¡´ÉÇÏ´Ù. ±×¸®°í privateÀº »ó¼ÓÀ» ÇßÀ» ¶§µµ ÇÏÀ§ Ŭ·¡½º¿¡¼µµ Á÷Á¢Á¢±Ù ºÒ°¡´ÉÇØÁø´Ù. ȤÀÚ´Â ÀÌ·± Àǹ®À» °¡Áú °ÍÀÌ´Ù. »ó¼ÓÀ» ¹Þ¾Ò´Ù¸é »óÀ§Å¬·¡½ºÀÇ ¸ðµç ¸â¹ö´Â ÇÏÀ§Å¬·¡½ºÀÇ ¸â¹ö°¡ µÇ´Â °ÍÀÌ ¾Æ´Ñ°¡¶ó´Â Àǹ®À» Á¦±âÇÒ °ÍÀÌ´Ù.
¸ðµç ¸é¿¡¼ privateÀ» ¼öÇàÇÏ¸é¼ »ó¼ÓÀÇ °ü°è¿¡¼¸¸ publicÀÇ ÇàÀ§¸¦ ÇÏ´Â °ÍÀÌ ¹Ù·Î protectedÀÔ´Ï´Ù. À̰ÍÀ» ´Ù¸£°Ô Ç¥ÇöÇÑ´Ù¸é ¾Æ¹öÁöÀÇ ¸ðµç °ÍÀº »ó¼ÓÀ» ¹Þ¾Æ Á÷Á¢ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ ¾Æ¹öÁöÀÇ private¸¸Àº Á÷Á¢Á¢±Ù ¸øÇÕ´Ï´Ù. ÇÏÁö¸¸ ¾Æ¹öÁöÀÇ protected´Â ¾ÆµéÀÇ ¸â¹öó·³ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¾Æ¹öÁöÀÇ ¸ðµç °ÍÀÌ ¾ÆµéÀÇ °ÍÀÌ µÈ´Ù°í ÇØµµ °ú¾ðÀÌ ¾Æ´Ï´Ù. Áï ¾Æ¹öÁö°Íµµ ³»°Í ³»°Íµµ ³»°ÍÀ̶ó´Â ¸»À» »ç¿ëÇÒ ¼ö Àִ°ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¸ðµç °ü°è¸¦ À§ÀÇ ¿¹Á¦¸¦ ÀÌ¿ëÇÏ¿© ³ªÅ¸³»¸é ¾Æ·¡ÀÇ ±×¸²°ú °°½À´Ï´Ù.
¸â¹öÇʵ常À» À̾߱âÇϴµ¥ ¸â¹ö¸Þ¼µå´Â ¾î¶»°Ô µÇ´À³Ä°í ÇÏ½Å´Ù¸é ¶È°°´Ù°í À̾߱â ÇÒ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù. ¸Þ¼µå³ª º¯¼ö³ª ¶È °°Àº ³ðµéÀ̴ϱî¿ä. °´Ã¼ÁöÇâ¿¡¼µµ ºÎ¸ð Àڽİü°èÀÇ ÀηûÀÇ ¹ýÄ¢Àº ¿ÏÀüÇÏ°Ô Áö۰í ÀÖ´Â °ÍÀÌ ½Å±âÇÏÁö ¾Ê½À´Ï±î? ¾Ë°í º¸¸é ÀÚ¹Ù´Â °´Ã¼ ÁöÇâ±â¼úÀÇ Áø¼ö¸¸ ¸ð¾Æ µÐ ¾ð¾îÀÔ´Ï´Ù. °ñÄ¡ ¾ÆÇ OOP°³³äÀº ³»ºÎ·Î ¼û±â¸é¼ ¸íÈ®ÇÏ°í °£´ÜÇÑ ¹æ¹ý·ÐÀ» Á¦½ÃÇÏ´Â °ÍÀÌ ÀÚ¹Ù¶ó´Â ¾ð¾îÀÔ´Ï´Ù.
4.4.6 ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ »ó¼Ó
ÀÚ¹Ù ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿© »ó¼ÓÀ» ¹è¿ö º¸µµ·Ï ÇÏÁÒ. ÇöÀç´Â °£´ÜÈ÷ À©µµ¿ì âÀ» ¸¸µé¾î ¶ç¿ö º¸µµ·Ï ÇϰڽÀ´Ï´Ù. »ó¼ÓÀ» ÇϰíÀÚ ÇÑ´Ù¸é »ó¼ÓÇÒ Å¬·¡½º¸¦ ¶óÀ̺귯¸®¸¦ import½ÃŰ°Å³ª ¾Æ´Ï¸é °°Àº µð·ºÅ丮¿¡ µÎ¾î¾ß ÇÑ´Ù.
import java.awt.*; |
ÇöÀç java.awt³»¿¡ FrameÀ̶ó´Â Ŭ·¡½º°¡ Á¸ÀçÇÕ´Ï´Ù. ÀÌ Å¬·¡½º¸¦ »ç¿ëÇϰڴٴ °ÍÀÔ´Ï´Ù. ¹°·Ð, ÀÌ Å¬·¡½º´Â JDK¿¡¼ ±âº»À¸·Î Á¦°øÇØ ÁÖ´Â ¶óÀ̺귯¸®ÀÔ´Ï´Ù. ¿ì¸®°¡ »ó¼ÓÇϰųª ¾Æ´Ï¸é »ç¿ëÇÏ·Á°í ÇÏ´Â ¶óÀ̺귯¸®¸¦ importÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. °°Àº µð·ºÅ丮¿¡ ÀÖ´Ù¸é importÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ÀÚ¹Ù¸¦ ¼³Ä¡ÇÒ ¶§ ¡°classpath =.;¡± À̶ó°í Àâ¾Æ ÁØ °ÍÀº °°Àº µð·ºÅ丮ÀÇ Å¬·¡½º¸¦ importÇÏÁö ¾Ê¾Æµµ µÇ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ¿ì¸®°¡ ¸¸µç ¶óÀ̺귯¸®°¡ ÀÖ´Ù¸é ´ç¿¬È÷ classpath¿¡ Ãß°¡½ÃÄÑ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏÁö ¾Ê´Â´Ù¸é ÇØ´ç Ŭ·¡½º¸¦ ÇÁ·Î±×·¥¿¡¼ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. °£´ÜÇÑ ¿¹¸¦ ¸¸µé¾î º¸µµ·Ï ÇÏÁÒ.
MyFrame .java(¶óÀ̺귯¸® »ó¼ÓÀ» Å×½ºÆ® Çϱâ À§ÇÑ ¿¹Á¦) |
import java.awt.*; public class MyFrame extends Frame{ public static void main(String[] args){ MyFrame m = new MyFrame(); m.setSize(200,200); m.show(); } } |
C:\examples\4. Class for Basic Java>javac MyFrame.java C:\examples\4. Class for Basic Java>java MyFrame |
À©µµ¿ì¸¦ ´Ý°íÀÚ ÇÑ´Ù¸é Ctrl-C¸¦ ÄܼÖâ¿¡¼ ´©¸£½Ã¸é µË´Ï´Ù.
4.4.7 °á·Ð
ÀÌ Àý¿¡¼ ¿ì¸®´Â ¾î´À Á¤µµ »ó¼ÓÀÌ ¹«¾ùÀÎÁö¿¡ ´ëÇØ¼ ¾Ë¾Ò½À´Ï´Ù. ¹°·Ð »ó¼ÓÀÇ °³³äÀº Àß ¸¸µé¾î µÐ Ŭ·¡½º¸¦ Àç »ç¿ëÇÒ ¼ö ÀÖÀ» ¶§´Â ¾ÆÁÖ È¿°ú ÀûÀÔ´Ï´Ù. ±×¸®°í °£´ÜÇÑ Á¢±ÙÁ¦¾îÀÇ ¿øÄ¢¸¸ ÁöŲ´Ù¸é ¾ÆÁÖ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ »ó¼Ó±¸Á¶¸¦ À߸ø ÀâÀ¸¸é ÇÁ·Î±×·¥Àº ¾û¸ÁÀÌ µÇ°í ¸¿´Ï´Ù. »ó¼ÓÀº µÎ °¡Áö ½Ã°¢¿¡¼ ¹Ù¶ó º¼ ¼ö ÀÖ½À´Ï´Ù. ÀÚ½ÅÀÌ ÀüüÀûÀÎ ÇÁ·Î±×·¥ÀÇ ±¸Á¶¸¦ Àâ±â À§Çؼ »ó¼Ó±¸Á¶¸¦ ¸¸µå´Â ÀÔÀå°ú ¸¸µé¾îÁ® Àִ Ŭ·¡½º³ª ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ´Â ÀÔÀåÀ¸·Î ³ª´ ¼ö ÀÖ½À´Ï´Ù. ¾î¶°ÇÑ °æ¿ìµç »ó¼ÓÀÇ °³³äÀ» Àß ÆÄ¾ÇÇÏÁö ¸øÇÏ¸é »ó¼Ó¿¡¼ ³ªÅ¸³ª´Â ÀåÁ¡µéÀ» ÀÌ¿ëÇϱ⿡´Â ¾î·Æ½À´Ï´Ù.
ÀϹÝÀûÀÎ »ó¼Ó°³³äÀ» ¾Ë°í ÀÖ´Ù¸é ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ´Â °ÍÀº ±×·¸°Ô ¾î·ÆÁö ¾Ê½À´Ï´Ù. ÇÏÁö¸¸ ÀÚ½ÅÀÇ ÇÁ·Î±×·¥ ±¸Á¶¸¦ »ó¼Ó ±¸Á¶¿¡ ¸Â°Ô Àß ¸¸µé±â À§Çؼ´Â ÀÛ¾÷ ¼³°è¿Í ºÐ¼®ÀÌ ¹Ýµå½Ã Æ÷ÇÔ µÇ¾î¾ß ÇÕ´Ï´Ù. ÀÛ¾÷ ºÐ¼®°ú ¼³°è°¡ ¾ø´Â »ó¼Ó ±¸Á¶´Â °á±¹¿¡ ¾²·¹±âÅëÀ¸·Î º¸³»¾ß°ÚÁÒ. ¿ì¸®°¡ ¸¶Áö¸·À¸·Î ¹è¿î Á¢±ÙÁ¦¾î´Â protectedÀÔ´Ï´Ù. ÀÌ protectedÀÇ Áø¼ö(òÒâ³)´Â ¹Ù·Î ClonableÀ̶ó´Â ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÒ ¶§ »ç¿ëµË´Ï´Ù. °´Ã¼´Â ÂüÁ¶¸¦ ±âº»À¸·Î Çϰí Àֱ⶧¹®¿¡ °´Ã¼ÀÇ ¸Þ¸ð¸®¸¦ ÀϹÝÀûÀÎ º¹»ç±â¹ýÀ¸·Î º¹»çÇÒ ¼ö´Â ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱ⠻ç¿ëµÇ´Â Clonable±â¹ý¿¡¼ protected¸Þ¼µå¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù. ÀÌ ClonableÀº ´Ù¸¥ Àå¿¡¼ ´Ù½Ã ¼³¸íÇϵµ·Ï ÇϰڽÀ´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù1ºÎ ÀúÀÚ:ÃÖ¿µ°ü |