[JAVA] °­ÁÂ 2



|2ÀÏÂ÷|



Java¿¡¼­ÀÇ °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö °­ÁÂ


class A

|

-------------------------------

|                             |

class B                      class C

                            |

                           class D



À§¿Í °°Àº °èÃþ±¸Á¶¸¦ °¡Áú ¶§ À§ÀÇ ±¸Á¶¸¦ ¸»·ÎÇ¥ÇöÇÏ¸é ¾Æ·¡¿Í °°´Ù.



class A´Â top classÀÌ´Ù.

class BÀÇ direct super class´Â class A ÀÌ´Ù.

class CÀÇ direct sub class´Â class D ÀÌ´Ù.

class B´Â botton classÀÌ´Ù.

class D´Â bottom classÀÌ´Ù.

class B´Â class A·Î ºÎÅÍ »ó¼Ó(inheritance)µÈ´Ù.

class D´Â class AÀÇ sub class ÀÌ´Ù.



°¢°¢ÀÇ class ´Â ±× ÀÚü°¡ template(¼³°èµµ,ÁÖÇü,°ÅǪÁý) °¡ µÈ´Ù. µû¶ó¼­ class °¡ ÀÖ´Ù¸é ±× °ÍÀÇ ½ÇÁ¦ ´ë»óÀÌ »ý¼ºµÉ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ½ÇÁ¦ ´ë»óÀ¸·Î ¸¸µé¾î Áø°ÍÀ» instance(½ÇÁ¦°´Ã¼)¶ó°í ÇÑ´Ù. ÀÌ·¯ÇÑ Å¬·¡½º¸¦ ¸¸µé±â À§Çؼ­´Â 'class' ¶ó´Â Å°¿öµå¸¦ »ç¿ëÇÑ´Ù.

class A {

}

ÀÌ·¸°Ô ÇÏ¸é °¡Àå °£´ÜÇÑ Å¬·¡½º°¡ ¸¸µé¾îÁ³´Ù. À§ÀÇ ÆÄÀÏÀ» Ŭ·¡½ºÀ̸§°ú °°Àº A.java ÆÄÀÏ·Î ÀúÀåÇÏ°í javac A.java¸¦ ½ÇÇàÇÏ¸é ¾Æ¹«·± ¹®Á¦¾øÀÌ ÄÄÆÄÀÏÀ̵ȴÙ. ½ÇÁ¦·Î ÀÚ¹Ù¸¦ ½ÇÇà½ÃÅ°±â À§Çؼ­´Â ±Ã±ØÀûÀ¸·Î ÀÚ¹Ù¸Ó½ÅÀÌ ÇÊ¿äÇϰԵȴÙ.

Java MachineÀº ÀÚ¹ÙÀü¿ë CPU°¡ ¸¸µé¾îÁö°í ÀÖ´Ù. ±×·¯³ª ¸¹Àº »ç¿ëÀÚ´Â intel°ú cylix³ª sun sparc °°Àº cpu¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. ÀÚ¹Ù½ÇÇàÄÚµå´Â ÀÚ¹Ù¸Ó½ÅÀÌÀÖ¾î¾ß ½ÇÇàµÉ ¼ö ÀÖÀ¸¸ç À§ÀÇ cpu¸¦ ¼û±â°í ÀÚ¹Ù¸Ó½ÅÀÎ °Íó·³ °¡ÀåÇÏ´Â °ÍÀÌ Á¸ÀçÇؾ߸¸ ÇÑ´Ù. ±×·¯ÇÑ ¿ªÇÒÀ» ÇÏ´Â °ÍÀÌ Java Virtual Machine(ÀÚ¹Ù°¡»ó¸Ó½Å)ÀÌ´Ù. ÀÌ·¯ÇÑ ÀÚ¹Ù°¡»ó¸Ó½ÅÀº applicationÀ¸·Î °³¹ßµÇ¾úÀ» °æ¿ì¿¡´Â java.exe°¡ ±× ÀÏÀ» ÇÒ ¼ö°¡ ÀÖ´Ù.

A.java¶ó´Â ¼Ò½º·ÎºÎÅÍ javac.exe¸¦ »ç¿ëÇÏ¿© Áï prompt¿¡¼­ c:\jdk1.1.1\bin\javac A.java¸¦ ½ÇÇàÇÔÀ¸·Î½á A.class¶ó´Â ÆÄÀÏÀÌ »ý¼ºµÇ°í ÀÌ·¸°Ô ÄÄÆÄÀÏµÈ ÆÄÀÏÀº ÀÚ¹Ù°¡»ó¸Ó½Å¿¡¼­ ½ÇÇà°¡´ÉÇÑ byte-code°¡ µÈ´Ù. JVM(ÀÚ¹Ù°¡»ó¸Ó½Å)¿¡¼­ ÀÌ·¯ÇÑ ½ÇÇàÄÚµå(byte-code)¸¦ ½ÇÁ¦·Î ½ÇÇàÀ» óÀ½ ¼öÇàÇÏ´Â °ÍÀº main() ¸Þ¼Òµå¸¦ È£ÃâÇÔÀ¸·Î½á ½ÃÀÛÇÑ´Ù. ±×·¯³ª JVM¿¡¼­ mainÀ» º¼ ¼ö ÀÖ±â À§Çؼ­´Â 'public' À̶ó´Â Å°¿öµå·Î Á¤ÀÇµÈ ¸Þ¼Òµå(½±°ÔÇÔ¼ö)¸¦ ½á¾ß¸¸ ÇÑ´Ù. ±×¸®°í º¸Åë Ŭ·¡½ºÀÇ ¸Þ¼Òµå´Â instance methodÀÌ´Ù. Áï Ŭ·¡½º¿¡¼­ ½ÇÁ¦·Î Á¸ÀçÇÏ´Â ´ë»óÀ» ¸¸µé°í ³­ ÈÄ »ç¿ë°¡´ÉÇÑ ¸Þ¼Òµå¸¦ ¸¹ÀÌ »ç¿ëÇÑ´Ù. ±×·¯³ª ÀÚ¹Ù°¡»ó¸Ó½ÅÀº Ŭ·¡½ºÀÇ instance°¡ »ý¼ºµÇ±â Àü¿¡ mainÀ» È£ÃâÇÑ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡ instance¸¦ ½ÇÁ¦·Î »ý¼ºÇÏÁö ¾Ê°í¼­ »ç¿ëÇÒ ¼ö ÀÖ°Ô ¸¸µå´Â 'static' À̶ó´Â Å°¿öµå¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù.

class A {

 public static void main(String[] args) {

 }

}

A.class·Î ÄÄÆÄÀÏÇÑ ÈÄ ½ÇÇà½ÃÅ°±â À§Çؼ­´Â JVMÀÌ ÇÊ¿äÇÏ´Ù. Áï, java AÀ̶ó°í ÇÏ¸é ½ÇÇàÀÌ µÈ´Ù. ±×·¯³ª ¾Æ¹«Àϵµ ÇÏÁö ¾Ê°í ³¡³¯ °ÍÀÌ´Ù.

¹ö±×¸¦ Àâ°Å³ª °³³äÀ» ÀÌÇØÇϱâ À§Çؼ­ °¡Àå ¸¹ÀÌ ¾²´Â Ŭ·¡½º¿Í method´Â ¾Æ¹«·¡µµ È­¸é¿¡ ÇÑ ¶óÀÎÀ» Ãâ·ÂÇÏ´Â °ÍÀÌ´Ù. È­¸é Ãâ·ÂÀ» À§ÇÑ Å¬·¡½º´Â ¸¹ÀÌ ¾²À̱⠶§¹®¿¡ ÀÌ¹Ì Ç¥ÁØ Å¬·¡½º·Î Á¦°øµÈ´Ù.

java.lang. ÀÇ package¿¡ µé¾îÀÖ´Ù. java.lang. ¿¡ µé¾îÀÖ´Â ÆÐÅ°Áö¸¦ ¾²±â À§Çؼ­´Â 'import' Å°¿öµå¸¦ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. ±×·¯¸é ÄÄÆÄÀÏ·¯´Â ±×°÷¿¡ °¡¼­ Ŭ·¡½º¸¦ Àоî¿Â´Ù. Àоî¿À¸é instance¸¦ ¸¸µå´Âµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â Ŭ·¡½ºµéÀ» ¸ð¾Æ³õÀº java.lang.ÆÐÅ°Áö´Â ±âº»ÀûÀ¸·Î ¸í½ÃÀûÀ¸·Î ½áÁÖÁö ¾Ê´õ¶óµµ ÀÚµ¿À¸·Î Àоî¿À°Ô µÇ¾îÀÖ´Ù.

½ÇÁ¦·Î ½ÇÇàµÇ´Â ¿ÏÀüÇÑ ¼Ò½ºÄÚµå´Â ´ÙÀ½°ú °°´Ù.

class A {

 int i = 10;

 public static void main(String[] args) {

    A instanceOfA ;

    instanceOfA = new A();

    System.out.println("AÀÇ instanceº¯¼ö i°ªÀº "

                        + instanceOfA.i + " ÀÔ´Ï´Ù");

 }

}



ÄÄÆÄÀÏ ÈÄ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°´Ù.

C:\Java ¿¬½À\OOP>java A

AÀÇ instanceº¯¼ö i°ªÀº 10 ÀÔ´Ï´Ù



A instanceOfA ; ´Â ´ÜÁö ÂüÁ¶º¯¼ö¸¸À» ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù.



methodÀÇ Á÷Á¢»ó¼Ó¿¡ÀÇÇÑ overridingÀ» ¾Ë¾Æº¸ÀÚ

class A {

 void getInfo() {

    System.out.println(

               "class AÀÇ method getInfo() ½ÇÇàµÊ");

 }

}

class B extends A {

 void getInfo() {

    System.out.println(

               "class BÀÇ method getInfo() ½ÇÇàµÊ");

 }

 public static void main(String[] args) {

    B instB ;

    instB = new B();

    instB.getInfo();

 }

}



½ÇÇà°á°ú´Â ¾Æ·¡¿Í °°´Ù.

C:\Java ¿¬½À\OOP>java B

class BÀÇ method getInfo() ½ÇÇàµÊ

class AÀÇ sub classÀÎ class B¿¡¼­ method¸¦ °°Àº À̸§À¸·Î ÀçÁ¤ÀÇÇØÁÖ¸é class AÀÇ method´Â ¼û°ÜÁø´Ù. ÀÌ°ÍÀÌ ¹Ù·Î method overridingÀÌ´Ù. ÀÌ·¯ÇÑ method overridingÀº °´Ã¼ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼­ ¾ÆÁÖ ¸¹ÀÌ µîÀåÇÑ´Ù. ¶ÇÇÑ Graphical User Interface·Î ÀÛ¼ºÇÏ°íÀÚ ÇÒ¶§ »ç¿ëÇÏ´Â java.awt. ÆÑÅ°Áö¿¡¼­ ¾ÆÁÖ¸¹ÀÌ µîÀåÇÏ°Ô µÉ °ÍÀÌ´Ù.





´ÙÀ½¿¡´Â Java OOP °­Á 2ÆíÀÌ ¿Ã¶ó¿Ã ¿¹Á¤ÀÔ´Ï´Ù.