|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ÆíÀÌ ¿Ã¶ó¿Ã
¿¹Á¤ÀÔ´Ï´Ù.