1996³â 3¿ù 19ÀÏ Ã¹ ÃâÆÇ, 1998³â 6¿ù 13ÀÏ ÃÖÁ¾ °»½Å


¾Õ ÆäÀÌÁö µÞ ÆäÀÌÁö »öÀÎ


ÀÚ¹ÙÀÇ ÁÖ¿ä ¹®¹ý

ÀÚ¹Ù´Â C/C++¿¡¼­ ¹®¹ýÀ» ºô¾î¿Â ¾ð¾îÀÌ´Ù. C ÇÁ·Î±×·¡¸Ó´Â ÀÚ¹Ù Äڵ尡 ÇÏ´Â ÀÏÀ» ¾î·ÆÀÝ°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀ̸ç, ƯÈ÷ C++ ÇÁ·Î±×·¡¸Ó´Â ¸î °¡Áö °³³ä Â÷À̸¸ ÀÌÇØÇÏ¸é ½±°Ô ÀÚ¹Ù ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖ´Ù. ½ã¿¡¼­ Á¦°øÇÏ´Â ÀÚ¹Ù ¾ð¾î ¸í¼¼(Java Language Specification) ¹®¼­¸¦ ÇÑ ¹ø Àо´Â °ÍÀÌ Å« µµ¿òÀÌ µÉ °ÍÀÌ´Ù. http://java.sun.com/docs/books/jls/html/index.html¿¡¼­ ±¸ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

±âº» À¯Çü

ÀÚ¹ÙÀÇ ¼¼°è´Â °´Ã¼·Î ½ÃÀÛÇؼ­ °´Ã¼·Î ³¡³­´Ù.

½ÇÁ¦ ÀÚ¹Ù¿¡ »ç¿ëµÇ´Â ¸ðµç À¯ÇüÀº °´Ã¼À̸ç Ŭ·¡½ºÀÌ´Ù. ÀÚ¹ÙÀÇ ¸ðµç Ŭ·¡½º´Â Ŭ·¡½º »ó¼Ó °èÃþ ±¸Á¶¿¡¼­ ÃÖ»óÀ§¿¡ À§Ä¡ÇÏ´Â (Áï, Á·º¸¿¡¼­ ½ÃÁ¶ ÇҾƹöÁö À§Ä¡¿¡ Á¸ÀçÇÏ´Â) java.lang.Object Ŭ·¡½º·ÎºÎÅÍ ÆÄ»ýµÈ´Ù. (java.lang.Object¿¡¼­ Ŭ·¡½º À̸§Àº ObjectÀ̸ç Ŭ·¡½º°¡ ¼Ò¼ÓµÇ¾î ÀÖ´Â ÆÐÅ°Áö À̸§ÀÌ java.langÀÌ´Ù. µÚ¿¡¼­ ´Ù½Ã ¾ð±ÞÇÏ°ÚÁö¸¸ java.lang ÆÐÅ°Áö´Â ÀÚ¹Ù ¾ð¾îÀÇ ÇÙ½ÉÀûÀΠŬ·¡½ºµéÀÌ Á¤ÀǵǾî ÀÖ´Ù.)

±×·±µ¥, ¿¹¿Ü ¾ø´Â ¹ýÄ¢ÀÌ ¾øµíÀÌ ¸î °¡Áö ¿¹¿Ü°¡ ÀÖ´Ù. Áï, ´ÙÀ½¿¡ ¾ð±ÞµÇ´Â À¯ÇüÀº ¾ÆÁÖ ÀÚÁÖ »ç¿ëµÇ´Â À¯Çüµé·Î ÆÛÆ÷¸Õ½º µîÀÇ ÀÌÀ¯·Î °´Ã¼·Î 󸮵ÇÁö ¾Êµµ·Ï ¼³°èµÇ¾ú´Ù. ÇÏÁö¸¸, ÀÌµé °¢ ±âº» À¯Çüµµ ´ëÀÀµÇ´Â Ŭ·¡½º°¡ ÀÖ¾î (Áï, ¿¹¸¦ µé¾î Á¤¼ö¸¦ ³ªÅ¸³»´Â int ±âº» À¯Çü¿¡´Â ´ëÀÀµÇ´Â Integer Ŭ·¡½º°¡ ÀÖ¾î »óÈ£ º¯È¯ÇÒ ¼ö ÀÖ°Ô µÇ¾î ÀÖ´Ù.) °´Ã¼ ¼¼°è¸¦ ¿ÏÀüÈ÷ ¶°³ªÁö´Â ¾Ê´Â´Ù. ÀÌµé ±âº» À¯ÇüÀº C³ª C++¿Í ´Þ¸® ½Ã½ºÅÛ¿¡ °ü°è¾øÀÌ À¯Çü Á¤ÀÇ°¡ ¾ö°ÝÇÏ°Ô À¯ÁöµÇµµ·Ï ÇÏ¿© ±â°è Á߸³ÀûÀÎ ¼Ó¼ºÀ» À¯ÁöÇÑ´Ù.

³í¸®°ª À¯Çü

boolean : ³í¸®°ªÀ¸·Î ´Ù¸¥ ±âº» À¯Çü¿¡¼­ Çü º¯È¯ÇÒ ¼ö ¾ø´Ù. true ȤÀº false °ªÀ» °¡Áø´Ù. C/C++ ÇÁ·Î±×·¡¸Ó´Â boolean À¯ÇüÀÇ °ªÀÎ true³ª false°¡ Á¤¼ö°ªÀÎ 1°ú 0À¸·Î º¯È¯µÉ ¼ö ¾øÀ½¿¡ ÁÖÀÇÇ϶ó.

¹®ÀÚ À¯Çü

char : 16ºñÆ® À¯´ÏÄÚµå ¹®ÀÚÀÌ´Ù. C/C++ ÇÁ·Î±×·¡¸Ó´Â ÀÚ¹Ù¿¡¼­ char À¯Çü°ú byte À¯ÇüÀÌ ¼­·Î ´Ù¸§¿¡ À¯ÀÇÇØ¾ß ÇÑ´Ù. ÀÚ¹Ù´Â À¯´ÏÄڵ带 Áö¿øÇϱâ À§ÇØ ¹®ÀÚ Çϳª°¡ 16ºñÆ®·Î Ç¥ÇöµÇ¸ç ³»ºÎÀûÀ¸·Î 16ºñÆ® ºÎÈ£¾ø´Â Á¤¼ö·Î 󸮵ȴÙ. char¿Í Á¤¼ö À¯ÇüÀº »óÈ£ À¯Çü º¯È¯(type casting)ÀÌ °¡´ÉÇÏ´Ù.

Á¤¼ö À¯Çü

byte : ºÎÈ£ ÀÖ´Â 8ºñÆ® Á¤¼ö °ªÀÌ´Ù.
short : ºÎÈ£ ÀÖ´Â 16ºñÆ® Á¤¼ö °ªÀÌ´Ù.
int : ºÎÈ£ ÀÖ´Â 32ºñÆ® Á¤¼ö °ªÀÌ´Ù. int°¡ ±â°è¿¡ °ü°è¾øÀÌ 32ºñÆ®·Î °íÁ¤µÇ¾ú´Ù´Â °ÍÀ» C/C++ ÇÁ·Î±×·¡¸Ó´Â ÁÖ¸ñÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.
long : ºÎÈ£ ÀÖ´Â 64ºñÆ® Á¤¼ö °ªÀÌ´Ù. longÀÌ ±â°è¿¡ °ü°è¾øÀÌ 64ºñÆ®·Î µÈ °ÍÀº Çö´ë ¿î¿µ üÁ¦µéÀÇ º¯È­¿¡ µû¸¥ °ÍÀÌ´Ù. 64ºñÆ® Á¤¼ö ¿¬»êÀÇ Çʿ伺ÀÌ Á¾Á¾ ´ëµÎµÇ°í ÀÖ°í 32ºñÆ® ±â°è¿¡¼­ long°ú int°¡ ¸ðµÎ 32ºñÆ®·Î¸¸ µÇ´ø C/C++ ¾ð¾îÀÇ ¹®Á¦Á¡À» Çö´ë¿¡ µîÀåÇÑ ÀÚ¹Ù´Â ¼öÁ¤ÇÑ ¼ÀÀÌ´Ù.

ºÎµ¿ ¼Ò¼öÁ¡ À¯Çü

float : 32ºñÆ® IEEE754 Ç¥ÁØ ºÎµ¿ ¼Ò¼öÁ¡ °ªÀÌ´Ù.
double : 64ºñÆ® IEEE754 Ç¥ÁØ ºÎµ¿ ¼Ò¼öÁ¡ °ªÀÌ´Ù.

Ŭ·¡½º ¼±¾ð¹®

¾Õ¿¡¼­ Àá±ñ Ŭ·¡½º¿¡ ´ëÇؼ­ ¾ð±ÞÇßÁö¸¸ C³ª ÆĽºÄ® °°Àº ÀýÂ÷Àû ȤÀº ±¸Á¶Àû ÇÁ·Î±×·¡¹Ö¿¡ Àͼ÷ÇØ ÀÖ´ø ÇÁ·Î±×·¡¸Ó¿¡°Ô °¡Àå »ý¼ÒÇÑ °³³äÀº ¿ª½Ã °´Ã¼¿Í Ŭ·¡½ºÀÏ °ÍÀÌ´Ù. ÀÚ¹Ù¿¡¼­´Â ¾ÕÀÇ ¿¹¿Ü¸¦ Á¦¿ÜÇÏ¸é ¸ðµç °ÍÀÌ °´Ã¼·Î Á¸ÀçÇÑ´Ù. Á¼Àº ÀǹÌÀÇ °´Ã¼´Â Ŭ·¡½º ÀνºÅϽº¸¦ ¶æÇϴµ¥ ÀνºÅϽº¶õ ÇØ´ç Ŭ·¡½º À¯ÇüÀÇ º¯¼ö¸¦ ¶æÇÑ´Ù°í »ý°¢ÇÏ¸é ¹«¹æÇÏ´Ù. ÀÚ¹ÙÀÇ ½ÇÇà ÆÄÀÏÀº ÆÄÀÏ Çϳª´ç ÇϳªÀÇ Å¬·¡½º°¡ ¼±¾ðµÇ¾î Àִ Ŭ·¡½º ÆÄÀÏÀÓÀ» »ý°¢Çغ¸¸é ÀÚ¹Ù°¡ ¸ðµÎ Ŭ·¡½º À§ÁÖ·Î ±¸¼ºµÇ¾î ÀÖ´Ù´Â °ÍÀ» ½±°Ô ´À³¥ ¼ö ÀÖ´Ù.

»õ·Î¿î Ŭ·¡½º À¯ÇüÀ» ¼±¾ðÇÏ·Á¸é ¹Ýµå½Ã Á¸ÀçÇÏ´Â ¾î¶² ´Ù¸¥ ºÎ¸ð Ŭ·¡½º(super-class)·ÎºÎÅÍ »ó¼Ó¹Þ¾Æ¾ß ÇÑ´Ù. ºÎ¸ð Ŭ·¡½º°¡ ¾ø´Â Ŭ·¡½º À¯ÇüÀº ´Ü Çϳª, ÀÚ¹Ù¿¡¼­ ½ÃÁ¶ ÇҾƹöÁö Ŭ·¡½º¿¡ ÇØ´çÇÏ´Â java.lang ÆÐÅ°ÁöÀÇ Object Ŭ·¡½ºÀÌ´Ù. ´ÙÀ½Àº Ŭ·¡½º ¼±¾ð¹®ÀÇ ÀÏ¹Ý Çü½ÄÀÌ´Ù. ´ë°ýÈ£ ¾ÈÀÇ ³»¿ëÀº »ý·« °¡´ÉÇÏ´Ù.

['Ŭ·¡½º Á¦ÇÑÀÚ'] class 'Ŭ·¡½º À̸§' [extends 'ºÎ¸ð Ŭ·¡½º À̸§'] [implements 'ÀÎÅÍÆäÀ̽º À̸§µé'] {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ... Ŭ·¡½º ³»¿ë ...
}

¿¹) JDKÀÇ jdk/demo/Blink µð·ºÅ丮ÀÇ Blink.java ÆÄÀÏ¿¡¼­

public class Blink extends java.applet.Applet implements Runnable {
// Blink Ŭ·¡½º´Â ¾ÖÇø´À̹ǷΠApplet Ŭ·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ´Â´Ù. 
// µÞºÎºÐÀÇ implements Runnable ±¸¹®Àº ¾Æ·¡¿¡¼­ ´Ù·ê ÀÎÅÍÆäÀ̽º ±¸Çö ¼±¾ð¹®ÀÌ´Ù.
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ...
}

À§ÀÇ ¿¹¿¡¼­ ºÎ¸ð Ŭ·¡½º À̸§Àº java.applet.AppletÀÌ´Ù. ÀÚ¹Ù¿¡¼­ Ŭ·¡½º À̸§¿¡ '.'ÀÌ µé¾î°£ °ÍÀº µð·ºÅ丮 ±¸ºÐÀÚ(À¯´Ð½º¿¡¼­ '/'¸¦, À©µµ¿ì¿¡¼­´Â '\'À» »ç¿ëÇÑ´Ù.)¿Í À¯»çÇÑ Àǹ̸¦ °¡Áø´Ù. µð·ºÅ丮 °³³äÀ» ÆÐÅ°Áö¶ó´Â °³³ä¿¡ Â÷¿ëÇÏ°í ÀÖ´Â ¼ÀÀÌ´Ù. ÆÐÅ°Áö´Â ¾Æ·¡¿¡¼­ ´Ù½Ã ¼³¸íÇÑ´Ù. JDK 1.0, 1.1¿¡´Â ÀÚ¹ÙÀÇ Ç¥ÁØ Å¬·¡½ºµéÀÌ java/lib/classes.zip ÆÄÀÏ¿¡ ¾ÐÃàµÇ¾î ÀÖ´Ù. ÀÌ ¾ÐÃàÀ» Ç®¾î º¸¸é ÇÏÀ§ µð·ºÅ丮¿¡ java/applet/Applet.class°¡ ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.
Ŭ·¡½º Á¦ÇÑÀÚ(class modifier)´Â ÇØ´ç Ŭ·¡½º¿¡ ´ëÇØ Á¢±Ù ±ÇÇÑ ¼öÁØÀ» ÁöÁ¤ÇÏ´Â °ÍÀ¸·Î °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼­ ºÒÇÊ¿äÇÑ ³»ºÎ »çÁ¤Àº ¿ÜºÎ¿¡ º¸ÀÌÁö ¾Êµµ·Ï Çϴ ĸ½¶È­(Encapsulation)¿¡ ÇØ´çÇÏ´Â °ÍÀÌ´Ù. C++ÀÇ Á¢±Ù Á¦ÇÑÀÚ¿Í °ÅÀÇ À¯»çÇÏ´Ù.
ÀÚ¹ÙÀÇ Å¬·¡½º Á¦ÇÑÀÚ¿¡´Â public, abstract, final¸¸ÀÌ ¿Ã ¼ö ÀÖ´Ù.

public : Ŭ·¡½º¿¡ ´ëÇÑ Á¢±Ù Á¦ÇÑÀڷΠŬ·¡½º ÆÐÅ°Áö ¿ÜºÎÀÇ Äڵ尡 »ç¿ëÇÒ ¼ö Àִ Ŭ·¡½ºÀÌ´Ù. ÇϳªÀÇ ¼Ò½º ÆÄÀÏ¿¡´Â ÃÖ´ë ÇϳªÀÇ public Ŭ·¡½º¸¸ Çã¿ëµÇ¸ç ¼Ò½º ÆÄÀÏÀÇ À̸§Àº ¹Ýµå½Ã ÀÌ Å¬·¡½ºÀÇ À̸§°ú °°¾Æ¾ß ÇÑ´Ù. Áï, À§ ¿¹Á¦¿¡¼­ public Ŭ·¡½º°¡ BlinkÀ̹ǷΠ¼Ò½º ÆÄÀÏ À̸§µµ Blink.javaÀÌ´Ù. (À©µµ¿ì ȯ°æ¿¡ Àͼ÷ÇÑ ÇÁ·Î±×·¡¸Ó´Â ÀÚ¹Ù°¡ ´ë¼Ò¹®ÀÚ ±¸º°À» ¾ö°ÝÇÏ°Ô ÇÔ¿¡ ÁÖÀÇÇ϶ó. ´ë¼Ò¹®ÀÚ°¡ À߸øµÇ¸é ÄÄÆÄÀÏÇÒ ¼ö°¡ ¾ø´Ù.)
public Á¦ÇÑÀÚ°¡ ¾ø´Â °æ¿ì(±âº» Á¢±Ù ±ÇÇÑ È¤Àº ÆÐÅ°Áö ±ÇÇÑ): ÇöÀç Ŭ·¡½º¿Í µ¿ÀÏÇÑ ÆÐÅ°Áö ³»ºÎ¿¡¼­ »ç¿ë °¡´ÉÇÑ Å¬·¡½ºÀÌ´Ù.
abstract : Ãß»ó ¸Þ¼Òµå(abstract method-½ÇÇ๮ÀÌ ¾ø´Â ¸Þ¼Òµå)¸¦ Æ÷ÇÔÇϰųª Á÷Á¢ ½ÇÇàµÇÁö ¾Ê´Â Ŭ·¡½ºÀÌ´Ù. C++¿Í Ãß»ó Ŭ·¡½º¿Í °ÅÀÇ °°´Ù.
final : C++¿¡ ¾ø´Â °³³äÀ¸·Î ÀÚ½Ä Å¬·¡½º¸¦ ¸¸µé ¼ö ¾ø´Â Ŭ·¡½ºÀÌ´Ù.

C++¿Í ¸¶Âù°¡Áö·Î Ŭ·¡½º ÀÚ½ÅÀ» °¡¸®Å³ ¶§¿¡´Â this¶ó´Â ¿¹¾à¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. °Ô´Ù°¡ ÀÚ¹Ù¿¡¼­´Â ºÎ¸ð Ŭ·¡½º¸¦ °¡¸®Å³ ¶§ super¶ó´Â ¿¹¾à¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù. ÁÖÀÇÇÒ Á¡Àº C++¿¡¼­ÀÇ this´Â Æ÷ÀÎÅÍ °³³äÀÌÁö¸¸ ÀÚ¹Ù¿¡¼­´Â ÀνºÅϽº °³³äÀ̶ó´Â Á¡ÀÌ´Ù. ±×¸®°í »ý¼ºÀÚ(constructor)¸¦ Ŭ·¡½º ³»ÀÇ ´Ù¸¥ ¸Þ¼Òµå¿¡¼­ È£ÃâÇÒ ¶§¿¡µµ this ¿¹¾à¾î¸¦ »ç¿ëÇÑ´Ù.

Ŭ·¡½º ¸Þ¼Òµå¿Í Çʵå

C++¿¡¼­´Â Ŭ·¡½º°¡ »óŸ¦ ³ªÅ¸³»´Â ¸â¹ö¿Í ÇàÀ§¸¦ ³ªÅ¸³»´Â ¸â¹ö ÇÔ¼ö·Î ±¸¼ºµÈ´Ù. ÀÚ¹ÙÀÇ Å¬·¡½º¿¡¼­´Â ¸â¹ö¸¦ Çʵå(field), ¸â¹ö ÇÔ¼ö¸¦ ¸Þ¼Òµå(method)·Î ºÎ¸¥´Ù. C++ÀÇ ¸â¹ö Á¢±Ù Á¦ÇÑ°ú ¸¶Âù°¡Áö·Î ÀÚ¹ÙÀÇ Çʵå¿Í ¸Þ¼Òµå Â÷¿ø¿¡¼­µµ public, protected, private Á¦ÇÑÀÚ(modifier)¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
ÀÚ¹Ù¿¡¼­ ¸Þ¼Òµå¸¦ ¼±¾ðÇÏ·Á¸é Ŭ·¡½º ³»ºÎ¿¡ ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ÇÑ´Ù.

'¸Þ¼Òµå Á¦ÇÑÀÚ' '¹Ýȯ À¯Çü' '¸Þ¼Òµå À̸§'('ÀÎÀÚ À¯Çü 1' 'ÀÎÀÚ 1', ...) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ... ¸Þ¼Òµå ³»¿ë ...
}

¿¹) Blink.java ÆÄÀÏ¿¡¼­

public void paint(Graphics g) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ...
}

ÇÊµå ¹× ¸Þ¼Òµå Á¦ÇÑÀÚÀÇ Á¾·ù¿Í Àǹ̴ ´ÙÀ½°ú °°´Ù.
Çʵå Á¦ÇÑÀÚ

    public protected private (Á¢±Ù Á¦ÇÑÀÚ)
    final static transient volatile
¸Þ¼Òµå Á¦ÇÑÀÚ
    public protected private (Á¢±Ù Á¦ÇÑÀÚ)
    abstract static final synchronized native

public : C++ÀÇ ¸â¹ö Á¢±Ù Á¦ÇÑ°ú À¯»çÇÏ´Ù. Áï, publicÀº ´Ù¸¥ Ŭ·¡½º¿¡¼­ ÀÚÀ¯·Ó°Ô Á¢±ÙÇÒ ¼ö ÀÖ´Ù.
protected : C++ÀÇ ¸â¹ö Á¢±Ù Á¦ÇÑ°ú À¯»çÇÏÁö¸¸, ÀÚ¹Ù¿¡¼­´Â ÆÐÅ°Áö¿Í °ü·ÃµÈ »õ·Î¿î Àǹ̸¦ °¡Áø´Ù. protected ¸â¹ö Çʵå ȤÀº ¸Þ¼Òµå´Â °°Àº ÆÐÅ°ÁöÀÇ Å¬·¡½ºµé¿¡¼­ Á¢±ÙÇÒ ¼ö ÀÖ°í, ¶Ç ´Ù¸¥ ÆÐÅ°ÁöÀÏÁö¶óµµ ÀÚ½Ä Å¬·¡½º¿¡¼­ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.
private : C++ÀÇ ¸â¹ö Á¢±Ù Á¦ÇÑ°ú À¯»çÇÏ´Ù. Áï, privateÀÎ °æ¿ì ÀÚ±â Ŭ·¡½º ³»ºÎ¿¡¼­¸¸ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.
À§ÀÇ Á¦ÇÑÀÚ°¡ ¾ø´Â °æ¿ì(±âº» Á¦ÇÑ È¤Àº ÆÐÅ°Áö Á¦ÇÑ): °°Àº ÆÐÅ°Áö ¾ÈÀÇ Å¬·¡½º¿¡¼­¸¸ Á¢±Ù °¡´ÉÇÏ´Ù.
µû¶ó¼­, Á¢±Ù Á¦ÇÑÀÌ ¾ö°ÝÇÑ Á¤µµ¸¦ Ç¥½ÃÇÏ¸é ´ÙÀ½°ú °°´Ù.

    public < protected < ±âº»(ÆÐÅ°Áö) < private 

final(method¿Í fieldÀÇ °æ¿ì°¡ ¶æÀÌ ´Ù¸§) : ¸Þ¼ÒµåÀÇ °æ¿ì¿¡´Â Ŭ·¡½º¸¦ »ó¼ÓÇÒ ¶§ ¿À¹ö¶óÀ̵åÇÒ ¼ö ¾ø´Â ¸Þ¼ÒµåÀÌ´Ù. ÇʵåÀÎ °æ¿ì¿¡´Â ¼öÁ¤ÀÌ ºÒ°¡´ÉÇÑ Áï, »ó¼ö¸¦ ¶æÇÑ´Ù. C++ÀÇ const¿Í À¯»çÇÏ´Ù.
static : C++ÀÇ static°ú °°´Ù. Áï, staticÀº Ŭ·¡½º ÀÚü ¼öÁØÀÇ Çʵå ȤÀº ¸Þ¼ÒµåÀÓÀ» ³ªÅ¸³½´Ù. ÀÌ °æ¿ì, ÇØ´ç Ŭ·¡½ºÀÇ ¸ðµç ÀνºÅϽº¿¡¼­ À̸¦ °øÀ¯Çϸç Á¢±Ù ½Ã¿£ 'Ŭ·¡½º À̸§'.'¸Þ¼Òµå ȤÀº Çʵå À̸§'À» »ç¿ëÇÑ´Ù.
synchronized(method) : ¸Þ¼Òµå ½ÃÀÛ ½Ã¿¡ °´Ã¼¸¦ Àá±×°í ³¡³ª¸é Ç®¾îÁØ´Ù. °´Ã¼°¡ ÀÌ¹Ì Àá°ÜÁ® ÀÖÀ¸¸é ÀÌ ¸Þ¼Òµå´Â °´Ã¼°¡ Ç®¸± ¶§±îÁö ±â ´Ù¸° ÈÄ ½ÇÇàÇÑ´Ù. ÀÚ¹Ù´Â ´ÙÁß ¾²·¹µù ȯ°æ¿¡¼­ ½ÇÇàµÇ¹Ç·Î ¾²·¹µå µ¿±âÈ­¸¦ À§ÇØ ÇÊ¿äÇÑ Á¦ÇÑÀÚÀÌ´Ù. µ¿ÀÏÇÑ °´Ã¼ÀÇ µÎ synchronized ¸Þ¼Òµå´Â Àý´ë µ¿½Ã¿¡ ¼öÇàµÉ ¼ö ¾ø´Ù.
native(method) : C·Î ¾²¿©Áø ½ºÅÓ(stub) ÆÄÀÏ¿¡¼­ È£ÃâµÇ´Â ¸Þ¼Òµå

transient(field) : ÀϽÃÀûÀÓÀ» ¶æÇÏ´Â Çʵå Á¦ÇÑÀÚ·Î °´Ã¼ Á÷·ÄÈ­(object serialization)½Ã¿¡ Á÷·ÄÈ­µÇÁö ¾Ê´Â Çʵ带 Ç¥½ÃÇÑ´Ù.

volatile(field) : ¾²·¹µåÀÇ µ¿ÀÛ°ú °ü·ÃµÈ Çʵå Á¦ÇÑÀÚ·Î ÇÑ ¾²·¹µå¿¡ ´ëÇÑ volatile º¯¼öµé¿¡ ´ëÇÑ ¿¬»êÀº ¾²·¹µå°¡ ¿äûÇÑ ¼ø¼­´ë·Î ÁøÇàµÇµµ·Ï º¸ÀåÇÑ´Ù.

ÇʵåÀÇ ¼±¾ð ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.

'Çʵå Á¦ÇÑÀÚ' 'À¯Çü' 'Çʵå À̸§';

¿¹) Blink.java ÆÄÀÏ¿¡¼­ 
Thread blinker;
String lbl;
Font font;
int speed;

Çʵå Á¦ÇÑÀÚ´Â Á¢±Ù Á¦ÇÑÀÚ(public, protected, final)ÀÇ °æ¿ì¿¡´Â ¸Þ¼Òµå Á¦ÇÑÀÚ¿Í °ÅÀÇ Àǹ̰¡ °°Áö¸¸ abstract, synchronized, native°¡ ¾ø°í transient, volatileÀÌ ´õ ÀÖÀ¸¸ç finalÀÇ °æ¿ì¿¡´Â Àǹ̰¡ ´Ù¸§¿¡ ÁÖÀÇÇÏÀÚ. finalÀÌ ¸Þ¼Òµå¿¡ ¾²ÀÌ¸é ¿À¹ö¶óÀ̵åÇÒ ¼ö ¾ø´Ù´Â ÀǹÌÀÌÁö¸¸ Çʵ忡 »ç¿ëµÇ¸é »ó¼ö·Î »ç¿ëÇÏ°Ú´Ù´Â ÀǹÌÀÌ´Ù. ¿¹¸¦ µé¾î java.awt.Color Ŭ·¡½ºÀÇ white´Â final staticÀ¸·Î ¼±¾ðµÇ¾î ÀÖ¾î Color.white¿Í °°ÀÌ Èò»öÀ» ³ªÅ¸³»´Â »ó¼ö·Î »ç¿ëµÈ´Ù.

»ó¼Ó, ¿À¹ö¶óÀ̵å, ¿À¹ö·Îµå

°´Ã¼ °³³ä¿¡¼­ °¡Àå Áß¿äÇÑ °Í Áß Çϳª´Â »ó¼ÓÀÌ´Ù. ºÎ¸ðÀÇ ¼Ó¼º°ú ±â´ÉÀ» ÀÚ½ÄÀÌ »ó¼Ó¹Þ¾Æ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.

Ŭ·¡½º ¼±¾ð¹®¿¡¼­ extends´Â »ó¼Ó °ü°è¸¦ ³ªÅ¸³½´Ù. Áï, extends ´ÙÀ½¿¡´Â Ŭ·¡½ºÀÇ ¹Ù·Î À­ ºÎ¸ð°¡ ÁöÁ¤µÈ´Ù. extends ¹®ÀÌ »ý·«µÈ Ŭ·¡½º ¼±¾ð¹®¿¡¼­´Â ¹Ù·Î À­ ºÎ¸ð°¡ java.lang ÆÐÅ°ÁöÀÇ Object Ŭ·¡½ºÀÌ´Ù. (ÀÚ¹Ù¿¡¼­ Object Ŭ·¡½º´Â ¸ðµç Ŭ·¡½ºÀÇ ºÎ¸ðÀÓÀ» ´Ù½Ã Çѹø °­Á¶ÇÑ´Ù. ºÎ¸ð°¡ ¾ø´Â Ŭ·¡½º´Â ´Ü Çϳª, Object Ŭ·¡½º»ÓÀÌ´Ù.)

¸Þ¼Òµå ¿À¹ö¶óÀ̵å(overriding method)´Â ºÎ¸ð·ÎºÎÅÍ ¹°·Á¹ÞÀº ¸Þ¼Òµå¸¦ ÀÚ½ÄÀÌ º°µµ·Î Á¤ÀÇÇÏ¿© ´Ù¸£°Ô ±¸ÇöÇÏ´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î OvalÀ̶ó´Â Ÿ¿øÀ» ÀǹÌÇϴ Ŭ·¡½º°¡ Á¤ÀǵǾî ÀÖ°í ÀÌ Å¬·¡½º´Â CircleÀ̶ó´Â ¿øÀ» ÀǹÌÇϴ Ŭ·¡½º¸¦ ÀÚ½ÄÀ¸·Î °¡Áø´Ù°í ÇÏÀÚ. Oval°ú Circle Ŭ·¡½º¿¡ µ¿ÀÏÇÑ draw() ¸Þ¼Òµå°¡ ±¸ÇöµÇ¾î ÀÖ´Ù ÇÏ´õ¶óµµ Oval Ŭ·¡½º´Â Ÿ¿øÀ» ±×¸± °ÍÀÌ°í Circle Ŭ·¡½º´Â ¿øÀ» ±×¸± °ÍÀÌ´Ù.

class Oval { // extends°¡ ¾øÀ¸¹Ç·Î ¹Ù·Î À­ ºÎ¸ð´Â java.lang.ObjectÀÌ´Ù.
    public void draw() {
        // Ÿ¿øÀ» ±×¸°´Ù.
    }
}
class Circle extends Oval {
    public void draw() {
        // ¿øÀ» ±×¸°´Ù.
    }
}

¸Þ¼Òµå ¿À¹ö·Îµå(overloaded methods)´Â °°Àº °´Ã¼(Ŭ·¡½º) ¾È¿¡ ¼­·Î ´Ù¸¥ ÀÎÀÚ¸¦ °®´Â µ¿ÀÏÇÑ À̸§ÀÇ ¸Þ¼ÒµåµéÀ» ¸»ÇÑ´Ù. ÀÚ¹Ù¿¡¼­´Â ¿À¹ö·ÎµåµÈ ¸Þ¼ÒµåµéÀ» ÀÎÀÚÀÇ À¯Çü, ¼ø¼­, °³¼ö¸¦ °¡Áö°í½Äº°ÇÒ ¼ö ÀÖ´Ù. (ÀÎÀÚÀÇ À̸§Àº Áß¿äÇÏÁö ¾Ê´Ù.) ´ÙÀ½Àº ¿À¹ö·ÎµåÀÇ °£´ÜÇÑ ¿¹ÀÌ´Ù.

class Circle extends Oval {
    public void draw() {
        // ¿øÀ» ±×¸°´Ù.
    }
    public void draw(int n) {
        // n °³ÀÇ µ¿½É¿øÀ» ±×¸°´Ù.
    }
}

¿À¹ö¶óÀ̵å(override)¿Í °¨Ãã(hide)

ºÎ¸ð Ŭ·¡½º¸¦ »ó¼ÓÇÏ¸é ºÎ¸ð Ŭ·¡½ºÀÇ Çʵå¿Í ¸Þ¼Òµåµéµµ »ó¼Ó¹Þ°Ô µÈ´Ù.
ÀÌ ¶§ ÀÚ½Ä Å¬·¡½º´Â »ó¼Ó¹ÞÀº Çʵå¿Í ¸Þ¼Òµå¸¦ ÀçÁ¤ÀÇÇؼ­ »ç¿ëÇÒ ¼ö Àִµ¥ Çʵå¿Í ¸Þ¼Òµå´Â ¼­·Î ´Ù¸¥ ¹æ½ÄÀ¸·Î ºÎ¸ðÀÇ °ÍÀ» ÀçÁ¤ÀÇÇÏ°Ô µÈ´Ù.
ÀÚ½Ä Å¬·¡½º°¡ ºÎ¸ð·ÎºÎÅÍ »ó¼Ó¹ÞÀº ¸Þ¼Òµå¸¦ ÀçÁ¤ÀÇÇÏ´Â °ÍÀ» ¸Þ¼Òµå ¿À¹ö¶óÀ̵å¶ó°í ÇÑ´Ù.
¸Þ¼Òµå°¡ ¿À¹ö¶óÀ̵åµÇ¸é ºÎ¸ð Ŭ·¡½ºÀÇ µ¿ÀÏÇÑ ¸Þ¼Òµå´Â ¹«½ÃµÇ°í »õ·Î Á¤ÀÇµÈ ¸Þ¼Òµå¸¸ ½ÇÇàµÇ°Ô µÈ´Ù.
¶Ç, ÀÚ½Ä Å¬·¡½º¿¡¼­ Çʵ尡 ÀçÁ¤ÀÇµÇ¸é ºÎ¸ð Ŭ·¡½ºÀÇ µ¿ÀÏÇÑ À̸§À» °¡Áø Çʵ带 ¼û±â°Ô µÇ´Âµ¥ ÀÌ°ÍÀ» °¨Ãã(hiding)À̶ó°í ÇÑ´Ù.
ÀçÁ¤ÀÇµÈ ¸Þ¼Òµå¿Í ÇʵåÀÇ µ¿ÀÛÀº ¼­·Î ´Ù¸¥µ¥ ƯÈ÷ ºÎ¸ð Ŭ·¡½º·ÎÀÇ Çü º¯È¯¿¡¼­ ¼­·Î ´Ù¸¥ °á°ú¸¦ º¸¿©ÁØ´Ù.
´ÙÀ½ ¿¹Á¦´Â Parent¶ó´Â Ŭ·¡½ºÀÇ number¶ó´Â Á¤¼ö Çʵå¿Í doWork()À̶õ ¸Þ¼Òµå¸¦ ÀÚ½Ä Å¬·¡½ºÀÎ Child¿¡¼­ ÀçÁ¤ÀÇÇÏ´Â ¿¹Á¦ÀÌ´Ù.
class Parent {
	final int number = 0;
	void doWork() {
		System.out.println("Parent is working...");
	}
}
	
class Child extends Parent {
	final int number = 999;
	void doWork() {
		System.out.println("Child is working...");
	}
}
	
public class OverrideAndHide {
	public static void main(String args[]) {
		Parent p = new Parent();
		Child c = new Child();
	
		// °á°ú´Â ParentÀÇ number
		System.out.println("p.number="+p.number);
		// °á°ú´Â ChildÀÇ number
		System.out.println("c.number="+c.number);
		// °á°ú´Â ParentÀÇ number
		System.out.println("((Parent)c).number="+((Parent)c).number);
	
		// °á°ú´Â ParentÀÇ doWork()
		p.doWork();
		// °á°ú´Â ChildÀÇ doWork()
		c.doWork();
		// °á°ú´Â ChildÀÇ doWork()
		((Parent)c).doWork();
	}
}
<¿¹Á¦:¿À¹ö¶óÀ̵å¿Í °¨Ãã Å×½ºÆ®>
½ÇÇàÇÏ¸é °á°ú´Â ¾î¶»°Ô µÉ±î?
OverrideAndHide.java°¡ ÀÖ´Â µð·ºÅ丮> javac OverrideAndHide.java ¡¡

OverrideAndHide.class°¡ ÀÖ´Â µð·ºÅ丮> java OverrideAndHide ¡¡
p.number=0
c.number=999
((Parent)c).number=0
Parent is working...
Child is working...
Child is working...
ÇʵåÀÇ °æ¿ì Child °´Ã¼ÀÎ c¸¦ Parent Ŭ·¡½º·Î Çüº¯È¯ÇÑ ´ÙÀ½ number Çʵ带 ÂüÁ¶ÇÏ¸é ºÎ¸ð Ŭ·¡½ºÀÇ number Çʵ尡 ÂüÁ¶µÈ´Ù.
ÇÏÁö¸¸ ¸Þ¼ÒµåÀÇ °æ¿ì ¸¶Âù°¡Áö·Î Child °´Ã¼ÀÎ c¸¦ Parent Ŭ·¡½º·Î Çüº¯È¯ÇÑ ´ÙÀ½ doWork() ¸Þ¼Òµå¸¦ È£ÃâÇßÁö¸¸ ¿ø·¡ c °´Ã¼ÀÇ À¯ÇüÀÎ Child Ŭ·¡½ºÀÇ doWork() ¸Þ¼Òµå°¡ È£ÃâµÇ¾ú´Ù.
ÀÌ°ÍÀº ÀÚ¹Ù ¾ð¾î°¡ ¿ø·¡ °´Ã¼ÀÇ À¯ÇüÀ» ±â¾ïÇÏ°í À־ Çü º¯È¯µÇ´õ¶óµµ ¿ø·¡ °´Ã¼ À¯ÇüÀÇ ÇØ´ç ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â °¡»ó ÇÔ¼ö(virtual function) ¹æ½ÄÀ» »ç¿ëÇϱ⠶§¹®ÀÌ´Ù.
¾ðÁ¦ ¾î¶² ¸Þ¼Òµå°¡ È£ÃâµÇ´ÂÁö ȤÀº ¾î¶² Çʵ尡 ÂüÁ¶µÇ´ÂÁö ¹Ýµå½Ã ±â¾ïÇصÎÀÚ.
ÇʵåÀÇ °æ¿ì ÀÚ½Ä Å¬·¡½º¿¡¼­ ÀçÁ¤ÀÇÇÒ °æ¿ì Ç×»ó ÇÊµå °¨ÃãÀÌ µÇÁö¸¸, ¸Þ¼ÒµåÀÇ °æ¿ì¿¡´Â ´ÙÀ½ ¼¼ °¡Áö °¡´É¼ºÀÌ ÀÖ´Ù.
À§ÀÇ °æ¿ìó·³ º¸ÅëÀÇ ÀνºÅϽº ¸Þ¼Òµå¸¦ ÀçÁ¤ÀÇÇÏ¸é ¸Þ¼Òµå ¿À¹ö¶óÀ̵尡 µÇ°í, static ¸Þ¼Òµå(static ¸Þ¼Òµå´Â Ŭ·¡½º ¸Þ¼Òµå¶ó°íµµ ÇÑ´Ù)ÀÎ °æ¿ì¿¡´Â ¸Þ¼Òµå °¨ÃãÀÌ µÈ´Ù.
¶Ç, ¸¸¾à ºÎ¸ð Ŭ·¡½ºÀÇ ¸Þ¼Òµå°¡ abstract¿´´Ù¸é ÀÚ½Ä Å¬·¡½º¿¡¼­ µ¿ÀÏÇÑ ¸Þ¼Òµå¸¦ ÀçÁ¤ÀÇÇÑ °ÍÀº ÀÎÅÍÆäÀ̽º ¸Þ¼Òµå¸¦ Á¤ÀÇÇÏ´Â °æ¿ìó·³ ±¸Çö(implement)À̶ó°í ºÎ¸¥´Ù.
ÀÚ½Ä Å¬·¡½º¿¡¼­ ºÎ¸ð Ŭ·¡½ºÀÇ °¨Ãß¾îÁø Çʵ峪 ¿À¹ö¶óÀ̵åµÈ ¸Þ¼Òµå¿¡ Á¢±ÙÇÏ·Á¸é super º¯¼ö¸¦ »ç¿ëÇÏ¸é µÈ´Ù.
Áï, À§ÀÇ °æ¿ì Child Ŭ·¡½ºÀÇ ÇÑ ¸Þ¼Òµå¿¡¼­ super.number¸¦ ÅÃÇÏ¸é ºÎ¸ð Ŭ·¡½ºÀÇ number °ªÀÎ 0¸¦ ³ªÅ¸³¾ °ÍÀÌ´Ù.
¸¶Âù°¡Áö·Î super.doWork() ¸Þ¼Òµå¸¦ È£ÃâÇÏ¸é ºÎ¸ð Ŭ·¡½ºÀÇ doWork() ¸Þ¼Òµå°¡ È£ÃâµÈ´Ù.

ºÎÀüÀÚÀü(Ý«îîí­îî)-Ŭ·¡½º ÀÚ·áÇü º¯È¯(type cast between classes)

¾Æ¹öÁö°¡ ÀÚÀü°Å¸¦ Ÿ¸é ¾Æµéµµ ÀÚÀü°Å¸¦ ź´Ù?

ÀÚ½Ä Å¬·¡½º À¯ÇüÀÇ °´Ã¼´Â ºÎ¸ð Ŭ·¡½º À¯ÇüÀ¸·Î Çüº¯È¯(type cast)ÀÌ °¡´ÉÇÏ´Ù. ¾Æ·¡ ¿¹Á¦´Â »ó¼Ó°ú Ŭ·¡½º Çüº¯È¯¿¡ °üÇÑ °£´ÜÇÑ ¹®Á¦ÀÌ´Ù. ¾Æ¹öÁöÀÇ Â÷´Â ¸£¸ÁÀÌ°í ¸ºÀÌ¿Í µÑ°ÀÇ Â÷´Â ·¹°£ÀÚ...

ÀÚ, Father Ŭ·¡½ºÀÇ main() ¸Þ¼Òµå¿¡¼­ ½ÇÇàµÉ °á°ú¸¦ ¿¹ÃøÇغ¸¶ó.

// Father.java
 
public class Father {
    String car="LeMans";
 
    void drive() {
        System.out.println(car);
    }
 
    public static void main (String args[]) {
        Father father=new Father();
        father.drive(); // LeMans
        System.out.println(father.car); // LeMans
 
        Child1 child1=new Child1();
        child1.drive(); // LeMans
        System.out.println(child1.car); // Leganza
        ((Father) child1).drive(); // LeMans
        System.out.println(((Father)child1).car); // LeMans
 
        Child2 child2=new Child2();
        child2.drive(); // Leganza
        System.out.println(child2.car); // Leganza
        ((Father) child2).drive(); // Leganza
        System.out.println(((Father)child2).car); // LeMans
 
        Child3 child3=new Child3();
        child3.drive(); // LeMans
        System.out.println(child3.car); // LeMans
        ((Father) child3).drive(); // LeMans
        System.out.println(((Father)child3).car); // LeMans
    }
}
 
class Child1 extends Father {
    String car="Leganza";
}
 
class Child2 extends Father {
    String car="Leganza";
 
    void drive() {
        System.out.println(car);
    }
}
 
class Child3 extends Father {
    void drive() {
        System.out.println(car);
    }
}
´ä ¼³¸í

 

 

ÀÎÅÍÆäÀ̽º

ÀÚ¹ÙÀÇ Å¬·¡½º´Â ´ÜÀÏ »ó¼Ó(single inheritance)¸¸À» Áö¿øÇÑ´Ù. µû¶ó¼­ ¸ðµç Ŭ·¡½ºÀÇ ºÎ¸ð´Â ±Ã±ØÀûÀ¸·Î java.lang ÆÐÅ°ÁöÀÇ Object Ŭ·¡½ºÀÌ´Ù. ÀÌ°ÍÀº °´Ã¼ÀÇ ´ÙÁß »ó¼ÓÀÌ °¡Áö´Â º¹À⼺ ¹× ºÒÇÕ¸®¼ºÀ» ¿ì·ÁÇÏ¿© º¸´Ù ¾ð¾î¸¦ °£´ÜÇÏ°Ô ÇÏ·Á´Â Àǵµ¿¡¼­ÀÌ´Ù. ÇÏÁö¸¸, ¸Þ¼Òµå ´ÜÀ§¿¡¼­´Â ¿©·¯ Ŭ·¡½º·ÎºÎÅÍ ¸Þ¼Òµå¸¦ »ó¼ÓÇÒ Çʿ伺ÀÌ »ý±â´Âµ¥ ÀÚ¹Ù¿¡¼­´Â À̸¦ ÃæÁ·½ÃÅ°±â À§ÇØ ÀÎÅÍÆäÀ̽º(Interface) °³³äÀ» µµÀÔÇÏ¿´´Ù.
ÀÎÅÍÆäÀ̽º´Â ½ÇÇà Äڵ尡 ¾ø´Â ¸Þ¼ÒµåµéÀÇ ÁýÇÕ¿¡ ´ëÇÑ ¼±¾ð¹®ÀÌ´Ù. Áï, Ŭ·¡½º¿¡¼­ ±¸ÇöÇØ¾ß ÇÒ ¸Þ¼Òµå¸¦ ¼±¾ðÇϱ⸸ ÇÏ´Â °ÍÀÌ´Ù. C++¿¡´Â ÀÎÅÍÆäÀ̽º °³³äÀÌ ¾øÁö¸¸, ´ëºÎºÐÀÇ °´Ã¼ ÁöÇâ ¾ð¾îµéÀÌ ±×·¸µí ÀÚ¹ÙÀÇ ÀÎÅÍÆäÀ̽º´Â ¸Þ¼Òµå(method)°¡ ¼±¾ðµÉ °ÍÀ» ÀüÁ¦ÇÏ°í ¸Þ¼ÒµåÀÇ ÁýÇÕÀ» Á¤ÀÇÇÑ´Ù. C++ÀÇ ¼ø¼ö °¡»ó ÇÔ¼ö(pure virtual fuction, C++¿¡¼­ ³Î ÄÚµå·Î µÈ, Áï ½ÇÇà Äڵ尡 ¾ø´Â ÇÔ¼ö¸¦ ÁöĪÇÑ´Ù.)¸¸À¸·Î ±¸¼ºµÈ Ãß»ó Ŭ·¡½º(C++¿¡¼­ Çϳª ÀÌ»ó ÀÇ ¼ø¼ö °¡»ó ÇÔ¼ö¸¦ ¸â¹ö·Î °¡Áø Ŭ·¡½º¸¦ Ãß»ó Ŭ·¡½º¶ó°í Çϴµ¥ À̵éÀº ÀνºÅϽº°¡ µÉ ¼ö ¾ø°í ´Ù¸¥ Ŭ·¡½ºÀÇ ±âº» Ŭ·¡½º·Î¸¸ »ç¿ëµÈ´Ù.)¶ó°í º¼ ¼ö ÀÖ´Ù.

ÀÎÅÍÆäÀ̽º´Â ¸Þ¼Òµå ¼±¾ðºÎ¿Í »ó¼ö¸¸À¸·Î ±¸¼ºµÈ´Ù. Áï, ¸Þ¼Òµå ¸öü¿Í º¯¼ö¸¦ °¡Áú ¼ö ¾ø´Ù.
½ÇÇ๮ÀÇ ¼¼ºÎÀûÀÎ ÄÚµùÀº ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áֱ⠵¿¾È¿¡ ¿Ï¼ºµÇ¾îµµ ÁÁÀ¸¹Ç·Î, ÀÌ·¯ÇÑ ÀÎÅÍÆäÀ̽º¿Í ¼¼ºÎÀûÀÎ ½ÇÇ๮ÀÇ ºÐ¸®´Â °´Ã¼ ÁöÇâ ÇÁ·Î±×·¥ÀÇ µðÀÚÀÎÀ» ºü¸£°Ô ÇØÁØ´Ù.
ÇϳªÀÇ Å¬·¡½º´Â ¿©·¯ °³ÀÇ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ¶Ç ÀÎÅÍÆäÀ̽º´Â Ŭ·¡½º¿Í À¯»çÇÏ°Ô ºÎ¸ð ÀÎÅÍÆäÀ̽º·ÎºÎÅÍ »ó¼Ó¹ÞÀ» ¼ö ÀÖ´Ù.

¿¹¸¦ µé¾î À§ÀÇ Blink.java¿¡¼­ Blink Ŭ·¡½º´Â Runnable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ°í ÀÖ´Ù.
Runnable ÀÎÅÍÆäÀ̽º´Â java.lang ÆÐÅ°Áö¿¡ Æ÷ÇԵǾî ÀÖ´Â ÀÎÅÍÆäÀ̽º·Î public abstract void run() À̶ó´Â ÇϳªÀÇ ¸Þ¼Òµå ¼±¾ð¹®¸¸À¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

¿¹) ÀÎÅÍÆäÀ̽º ¿¹Á¦

// Test.java
 
class Test implements MyInterface { // Test Ŭ·¡½º´Â MyInterface ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ´Ù°í ¼±¾ð
    public int getValue() { // ÀÎÅÍÆäÀ̽º MyInterface¿¡ ¼±¾ðµÈ ¸Þ¼Òµå¸¦ ¹Ýµå½Ã ±¸ÇöÇØ¾ß ÇÑ´Ù.
        return value;       // ½ÇÁ¦ ¸®ÅϵǴ value´Â ÀÎÅÍÆäÀ̽º¿¡ ¼±¾ðµÈ »ó¼ö°ªÀÌ´Ù.
    }
 
    public static void main (String args[]) {
        // main() ¸Þ¼Òµå´Â staticÀ̹ǷΠ°´Ã¼ÀÇ ÀνºÅϽº¿¡¼­ È£ÃâµÇ´Â °ÍÀÌ ¾Æ´ÔÀ» ¸í½ÉÇÏÀÚ.
        Test test=new Test(); // Test Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÑ´Ù.
        System.out.println("value="+test.getValue());
    }
}
 
// ÀÎÅÍÆäÀ̽º ¼±¾ðºÎ
interface MyInterface {
    final int value=5;  // ÀÎÅÍÆäÀ̽º´Â º¯¼ö´Â °¡Áú ¼ö ¾øÁö¸¸ »ó¼ö¸¦ °¡Áú ¼ö´Â ÀÖ´Ù.
 
    public int getValue(); // ¸öü°¡ ¾ø´Â ¸Þ¼Òµå ¼±¾ð¹®ÀÌ´Ù. ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϴ Ŭ·¡½º¿¡¼­ ¸öü¸¦ ±¸Çö(½ÇÇà ÄÚµå ÀÛ¼º)ÇØ¾ß ÇÑ´Ù.
}
 
½ÇÇà °á°ú

ÆÐÅ°Áö

ÀÎÅÍÆäÀ̽º¿Í ÇÔ²² C++ ÇÁ·Î±×·¡¸Ó¿¡°Ô »ý¼ÒÇÑ °³³äÀº ÆÐÅ°ÁöÀÌ´Ù. ÆÐÅ°Áö´Â °ü·ÃµÈ Ŭ·¡½ºµéÀÇ ±×·ìÀÌ´Ù. ÆÐÅ°Áö¸¦ ¸¸µé·Á¸é ÇØ´ç ¼Ò½º ÆÄÀÏÀÇ ¸Ç À­ºÎºÐ¿¡ package ¹®À» »ç¿ëÇÏ¸é µÈ´Ù.
ÀÚ¹ÙÀÇ ÇÙ½É ½Ã½ºÅÛ Å¬·¡½ºµé ¿ª½Ã ¿©·¯ °¡ÁöÀÇ ÆÐÅ°Áö·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¾î, ¾ÖÇø´À¸·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â Applet Ŭ·¡½º´Â java.applet ÆÐÅ°Áö¿¡ Æ÷ÇԵǾî ÀÖ´Ù. ½ÇÁ¦ Applet Ŭ·¡½ºÀÇ ¼Ò½ºÀÎ Applet.java´Â ´ÙÀ½°ú °°Àº ¼±¾ð¹®À¸·Î ½ÃÀ۵ȴÙ.

package java.applet; 

ÀÚ¹Ù¿¡¼­ ÆÐÅ°Áö °³³äÀº µð·ºÅ丮 (ȤÀº Æú´õ) °³³äÀ» ³»Æ÷ÇÏ°í Àִµ¥, Applet Ŭ·¡½º¸¦ Æ÷ÇÔÇÏ¿©java.applet ÆÐÅ°Áö ¾ÈÀÇ ¸ðµç Ŭ·¡½ºµéÀº Ŭ·¡½º °æ·Î ȯ°æº¯¼ö°¡ ÁöÁ¤µÇ¾î ÀÖ´Â µð·ºÅ丮 ¾Æ·¡ÀÇ java/applet µð·ºÅ丮 ¾Æ·¡¿¡ Á¸ÀçÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. JDK¿¡ Æ÷ÇԵǾî ÀÖ´Â rt.jar(JDK ¼³Ä¡ µð·ºÅ丮 ¾Æ·¡ÀÇ jre/lib µð·ºÅ丮¿¡ µé¾î ÀÖ´Ù. JDK 1.2 ÀÌÀü ¹öÀü¿¡¼­´Â lib µð·ºÅ丮¿¡ ÀÖ´Â classes.zip)ÀÇ ¾ÐÃàÀ» Ç®¾îº¸¸é ÀÌ¿Í °°Àº »ç½ÇÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

Ŭ·¡½º¿¡¼­ ÀÚ½ÅÀÌ ¼ÓÇÏÁö ¾ÊÀº ¿ÜºÎÀÇ ÆÐÅ°Áö¸¦ ºÒ·¯ »ç¿ëÇÏ·Á¸é Ŭ·¡½º ¼±¾ðºÎ À§¿¡ import ¹®À» ¼±¾ðÇØÁà¾ß ÇÑ´Ù. À§¿¡¼­ ¿¹Á¦·Î µç Blink.java´Â ¾ÖÇø´À¸·Î »ç¿ëÇϱâ À§ÇØ java.applet ÆÐÅ°ÁöÀÇ Applet Ŭ·¡½º¸¦ »ó¼ÓÇÏ¿© ±× ¸Þ¼ÒµåµéÀ» »ç¿ëÇϹǷΠ¼Ò½º À­ ºÎºÐ¿¡

import java.applet.*;

°ú °°Àº ÆÐÅ°Áö »ç¿ë ¼±¾ðÀ» ÇØÁà¾ß ÇÑ´Ù. ½ÇÁ¦ Blink.java Ŭ·¡½º ¼Ò½º¸¦ µé¿©´Ùº¸¸é À§ÀÇ ±¸¹®ÀÌ »ý·«µÇ¾î Àִµ¥ ÀÌ°ÍÀº extends AppletÀ» ¾²Áö ¾Ê°í extends java.applet.Applet°ú °°ÀÌ ÆÐÅ°Áö °æ·Î¸¦ ÁöÁ¤ÇØÁÖ´Â ¹æ¹ýÀ» »ç¿ëÇÏ¿´±â ¶§¹®ÀÌ´Ù. ÀÌ¿Í °°ÀÌ ÆÐÅ°Áö °æ·Î¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀ¸·Î »ç¿ëÇÒ Å¬·¡½º¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ°ÚÁö¸¸ ¸¹Àº °æ¿ì ÀÚÁÖ »ç¿ëµÇ´Â ÆÐÅ°Áö¸¦ ÀÏÀÏÀÌ Å¬·¡½º À̸§ ¾Õ¿¡ ÆÐÅ°Áö °æ·Î¸¦ ÁöÁ¤Çϱ⺸´Ù´Â import ¹®À» »ç¿ëÇÏ¿© °£´ÜÈ÷ Ŭ·¡½º À̸§¸¸ »ç¿ëÇÏ´Â °ÍÀÌ ÄÚµù¿¡ È¿À²ÀûÀÌ´Ù.

C³ª C++¿¡¼­ ¼±Çà 󸮱âÀÎ #include ¹®¿¡ ÇØ´çÇÏ´Â ¿ªÇÒÀ» import°¡ ¼öÇàÇÑ´Ù°í »ý°¢ÇÒ ¼ö ÀÖ´Ù. ÀÚ¹Ù´Â ¼±Çà󸮱⠰³³äÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù.
¿¹¸¦ µé¾î Blink.java´Â ´ÙÀ½ µÎ °³ÀÇ import ¹®À¸·Î java.awt ÆÐÅ°ÁöÀÇ ¸ðµç Ŭ·¡½º¿Í java.util.StringTokenizer Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. import ¹®À» »ç¿ëÇÏ´Â µÎ °¡Áö ¹æ½ÄÀ̹ǷΠ´«¿©°Ü º¸¾ÆµÎÀÚ.

import java.awt.*; // java.awt ÆÐÅ°Áö ¾ÈÀÇ ¸ðµç Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù.
import java.util.StringTokenizer; // java.util ÆÐÅ°Áö ¾È¿¡¼­ StringTokenizer Ŭ·¡½º¸¸ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù.

ÀÚ¹Ù¿¡ ÇʼöÀûÀ¸·Î Á¦°øµÇ´Â ÄÚ¾î API¸¦ ±¸¼ºÇÏ´Â ÁÖ¿ä ÆÐÅ°ÁöµéÀº ´ÙÀ½°ú °°´Ù.(ÀÚ¹Ù API ¹®¼­¸¦ Âü°íÇ϶ó.)

java.lang ÆÐÅ°Áö : ¸ðµç Ŭ·¡½ºÀÇ ºÎ¸ð Ŭ·¡½ºÀÎ Object Ŭ·¡½º¸¦ Æ÷ÇÔÇÏ¿© ÇʼöÀûÀÎ Àڹ٠Ŭ·¡½ºµéÀ» Æ÷ÇÔÇÏ°í À־ ¸ðµç ÀÚ¹Ù ÆÄÀÏ¿¡ ÀÚµ¿À¸·Î Æ÷ÇԵȴÙ. Áï, import ¹®À» º°µµ·Î ¾²Áö ¾Ê¾Æµµ ÀÚµ¿À¸·Î Æ÷ÇԵǴ ±âº» ÆÐÅ°Áö·Î ÀÚ¹Ù ¾ð¾îÀÇ ÇÙ½É ºÎºÐÀ» ±¸¼ºÇÏ´Â ÆÐÅ°ÁöÀÌ´Ù.
java.applet ÆÐÅ°Áö : ¾ÖÇø´À» ¸¸µé ¼ö ÀÖ°Ô ÇØÁÖ´Â ÆÐÅ°ÁöÀÌ´Ù. Blink Ŭ·¡½º¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖµíÀÌ ¸ðµç ¾ÖÇø´ Ŭ·¡½º´Â ÀÌ ÆÐÅ°ÁöÀÇ Applet Ŭ·¡½º¿¡¼­ ÆÄ»ýµÈ´Ù.
java.awt ÆÐÅ°Áö : Ãß»ó À©µµ¿ì ÅøŶ Ŭ·¡½ºµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. Ãß»ó À©µµ¿ì ÅøŶ(Abstract Window Toolkit)Àº ±â¹Ý Ç÷§Æû¿¡ µû¶ó X-À©µµ¿ì ½Ã½ºÅÛÀÇ ¸ðƼÇÁ(motif) ¶Ç´Â Win32 ½Ã½ºÅÛÀÇ À©µµ¿ì API µîÀ» ÀÌ¿ëÇÏ¿© Ç÷§Æû¿¡ µ¶¸³ÀûÀÎ GUI ÀÀ¿ë ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ°Ô ÇØÁØ´Ù .
java.awt.image ÆÐÅ°Áö : À̹ÌÁö ó¸® °ü·Ã Ŭ·¡½ºµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù.
java.io ÆÐÅ°Áö : ÀÔÃâ·Â¿¡ °ü°èµÈ Ŭ·¡½ºµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù.
java.net ÆÐÅ°Áö : ³×Æ®¿öÅ© ¿¬°á¿¡ °ü·ÃµÈ Ŭ·¡½ºµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù.
java.util ÆÐÅ°Áö : Date, Dictionary, Hashtable µî ¿©·¯ °¡Áö À¯¿ëÇÑ Å¬·¡½ºµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â ÆÐÅ°ÁöÀÌ´Ù.

ÀÌ¿Ü¿¡µµ java.rmi(¿ø°Ý ¸Þ¼Òµå È£Ãâ °ü·Ã ÆÐÅ°Áö), java.beans(ÀÚ¹Ù ÄÄÆÛ³ÍÆ® ¼ÒÇÁÆ®¿þ¾î ¸ðµ¨ÀÎ ºóÁî °ü·Ã ÆÐÅ°Áö), java.sql(µ¥ÀÌÅͺ£À̽º Á¶ÀÛ °ü·Ã ÆÐÅ°Áö), java.text(´Ù±¹¾î Áö¿ø °ü·Ã ÆÐÅ°Áö) µîÀÇ ÆÐÅ°ÁöµéÀÌ ÀÖ´Ù.

 

¿¹¿Ü ó¸®(Exception Handling)

¿¹¿Ü 󸮴 C++¿Í ¹®¹ýÀÌ °ÅÀÇ °°´Ù. Áï, try, catch, throw ±¸¹®À» »ç¿ëÇÑ´Ù.
´ÙÀ½Àº ÀüÇüÀûÀÎ ¿¹¿Ü ó¸® ±¸¹®ÀÌ´Ù.

try {
    Thread.currentThread().sleep(1000);
}
catch ( InterruptedException e ) {
    System.out.println("Sleep interrupted!!!");
}

try ºí·ÏÀº ¿¹¿Ü°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â ½ÇÇ๮µéÀ» Æ÷°ýÇÏ´Â ºí·ÏÀ̸ç catch´Â try ºí·Ï¿¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇÑ °æ¿ì À̸¦ ó¸®ÇÏ´Â ºí·ÏÀÌ´Ù. ¶Ç, throw´Â ¿¹¿Ü¸¦ ¹ß»ý½ÃÅ°´Â ¿¹¾à¾îÀÌ´Ù.

ÀÌ ±¸¹®¿¡¼­ ¿¹¿Ü¸¦ ¹ß»ý½Ãų °¡´É¼ºÀÌ ÀÖ´Â ¸Þ¼Òµå´Â java.lang.Thread Ŭ·¡½ºÀÇ sleep()À¸·Î ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù.

public static void sleep(long millis) throws InterruptedException 

¸Þ¼Òµå ¾È¿¡¼­ throw°¡ ¾²ÀÏ °æ¿ì C++¿¡¼­¿Í ¸¶Âù°¡Áö·Î throwÀÇ ´ë»óÀº Ŭ·¡½º ÀνºÅϽºÀÌ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù.

class RangeException extends Exception {
    // RangeException ¿¹¿Ü Ŭ·¡½º ¼±¾ð¹® ¸öü
}
 
class Sample {
    try {
        getRange(i);
    } catch(RangeException e) {
        System.out.println("¹üÀ§ ¹ÛÀÇ °ªÀÔ´Ï´Ù.");
    }
 
    getRange (int i) {
        if (i>10) {
            throw new RangeException();
        }
        ...
    }
}

C++¿Í ´Þ¸®, ÀÚ¹Ù¿¡¼­´Â ¿¹¿Ü ó¸®¿Í °ü·ÃÇÑ ¶ÇÇϳªÀÇ ¿¹¾à¾î finally°¡ ÀÖ´Ù.
catch(Exception e){} ºí·Ï°ú ´Þ¸® finally {} ºí·ÏÀÇ ³»¿ëÀº try {} ºí·ÏÀÇ ½ÇÇà °á°ú¿¡ ¹«°üÇÏ°Ô Ç×»ó ½ÇÇàµÈ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù.

try {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (music != null) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ music.loop();
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ... »ý·«(½ÇÇàÇÒ ³»¿ëµé)...
} finally {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (music != null) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ music.stop();
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
}

À§ ¿¹¿¡¼­´Â musicÀ̶ó´Â À̸§ÀÇ ¿Àµð¿À ÆÄÀÏÀ» ¹Ýº¹Çؼ­ ¿¬ÁÖÇϸ鼭 ´Ù¸¥ ½ÇÇ๮µéÀ» ¼öÇàÇÏ´Ù°¡, ±× ½ÇÇ๮µéÀÇ ¼öÇàÀÌ ³¡³ª°Å³ª ȤÀº ¼öÇà Áß¿¡ ¾î¶² ¿¹¿Ü³ª break, continue ¹® µîÀ» ¸¸³ª¼­ try ºí·ÏÀ» Å»ÃâÇÏ´õ¶óµµ finally ºí·ÏÀ» ¹«Á¶°Ç ¼öÇàÇÏ°Ô µÇ¾î ¿Àµð¿À ÆÄÀÏ ¿¬ÁÖ¸¦ ¹Ýµå½Ã ÁߴܽÃÅ°°Ô µÈ´Ù. ÀÌ finally ºí·ÏÀº ÁÖ·Î ÆÄÀÏÀ̳ª ³×Æ®¿÷ ¼ÒÄÏ µî°ú °°ÀÌ ÀÏ´Ü ¿¬ ´ÙÀ½, ¾î¶°ÇÑ ¿¹¿Ü »óȲÀÌ ¹ß»ýÇÏ´õ¶óµµ ¹Ýµå½Ã ´Ý¾Æ¾ß¸¸ ÇÏ´Â ¸®¼Ò½º¸¦ °ü¸®ÇÏ´Â µ¥ ÈçÇÏ°Ô »ç¿ëµÈ´Ù.

throws ¼±¾ð¹®

À§ÀÇ sleep ¼±¾ð¹®À» ÁÖÀDZí°Ô º» »ç¶÷Àº throws¶ó´Â »õ·Î¿î ´Ü¾î¿¡ ¾î¸®µÕÀýÇßÀ» °ÍÀÌ´Ù. throw´Â ¿¹¿Ü¸¦ ¹ß»ý½ÃÅ°´Â ¿¹¾à¾î¿´´Âµ¥ ±×°Íµµ sleep ¸Þ¼Òµå ¼±¾ðºÎ¿¡¼­ »ç¿ëµÈ °ÍÀº throw°¡ ¾Æ´Ï¶ó throwsÀÌ´Ù. throws´Â ¸Þ¼Òµå ³»ºÎ¿¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇÒ ¼ö ÀÖÀ½À» ¼±¾ðÇÏ´Â ±¸¹®ÀÌ´Ù. ÀÌ°ÍÀº ¸Þ¼Òµå ³»ºÎ¿¡¼­ try-catch ºí·ÏÀ¸·Î ¿¹¿Ü¸¦ ó¸®ÇÏÁö ¾Ê°í ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °÷¿¡¼­ ÀÌ ¿¹¿Ü¸¦ ¹Ýµå½Ã ó¸®Çϵµ·Ï Áö½ÃÇÏ´Â °ÍÀÌ´Ù. ¸Þ¼Òµå ³»ºÎ¿¡¼­ ¹ß»ý °¡´ÉÇÑ ¿¹¿Ü¸¦ ó¸®ÇÏÁöµµ ¾Ê°í throws ±¸¹®µµ ¼±¾ðÇÏÁö ¾ÊÀ¸¸é ÄÄÆÄÀÏ ¿¡·¯°¡ ¹ß»ýÇÏ¿© ¼Ò½º°¡ ÄÄÆÄÀϵÇÁö ¾Ê´Â´Ù.

±× ¿Ü ±âº» ¹®¹ý »çÇ×µé

Ŭ·¡½º, ÀÎÅÍÆäÀ̽º, ÆÐÅ°Áö µîÀ» Á¦¿ÜÇÑ ³ª¸ÓÁö ¹®¹ý »çÇ×Àº °ÅÀÇ C/C++ÀÇ ¹®¹ýÀ» ÁØ¿ëÇؼ­ »ç¿ëÇÑ´Ù°í º¼ ¼ö ÀÖ´Ù. °£´ÜÇÏ°Ô ÀÚ¹ÙÀÇ ³ª¸ÓÁö ¹®¹ýÀ» ¤¾îº¸ÀÚ.

1) ÁÖ¼®¹®

C++ÀÇ ÁÖ¼®¹®ÀÎ '// ÁÖ¼® ³»¿ë'°ú '/* ÁÖ¼® ³»¿ë */'Àº ±×´ë·Î ÀÚ¹Ù¿¡ »ç¿ëµÈ´Ù. ÀÚ¹Ù¿¡´Â ¶ÇÇϳªÀÇ ÁÖ¼®¹®('/** ¹®¼­ ÁÖ¼® */' )ÀÌ Àִµ¥ ÀÌ°ÍÀº ¼±¾ð¹® ¾Õ¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ°í javadoc¶õ À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¿© ¼Ò½º ¼³¸í ¹®¼­¸¦ ÀÚµ¿ »ý¼ºÇÒ ¶§ »ç¿ëµÈ´Ù.

2) ¹è¿­°ú ¿¬»êÀÚ

ÀÚ¹ÙÀÇ ¹è¿­ ¼±¾ðÀº C++¿Í °ÅÀÇ µ¿ÀÏÇÏ´Ù. Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù¸é ÀÚ¹Ù´Â ¹è¿­À» ½ºÅÿ¡ ¸¸µå´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. (¾Æ·¡ ¿¹ ÂüÁ¶.) ´Ù½Ã ¸»Çϸé Á÷¿ª º¯¼ö·Î ¹è¿­ÀÇ ¸Þ¸ð¸® °ø°£(Å©±â)À» ÇÒ´çÇÏ´Â °ÍÀÌ Çã¿ëµÇÁö ¾Ê±â ¶§¹®¿¡ ¹Ýµå½Ã µ¿ÀûÀ¸·Î ¹è¿­À» ÇÒ´çÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. µ¿ÀûÀ¸·Î ¹è¿­À» ÇÒ´çÇÏ´Â ¹æ¹ýÀº C++¿¡¼­Ã³·³ new ¿¬»êÀÚ¸¦ »ç¿ëÇϰųª ÀÎÀÚ¸¦ ¹Ù·Î ÁöÁ¤ÇÏ´Â µ¿ÀûÀÎ ¹æ¹ýÀÌ ÀÖ´Ù. ´ÙÀ½ ¿¹¸¦ Âü°íÇÏÀÚ.

int matrix[5]={1,2,3,4,5}; // À߸øµÊ. ½ºÅÿ¡ ¹è¿­À» ¸¸µéÁö ¾ÊÀ¸¹Ç·Î ÀÚ·áÇüÀ» ¼±¾ðÇÒ ¶§ ¹è¿­ Å©±â¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø´Ù.
int matrix[5]; // ¸¶Âù°¡Áö·Î À߸øµÊ.

int matrix[][]=new int[3][3];
int[][] matrix=new int[3][3]; // ÀÚ¹Ù¿¡¼­´Â º¯¼ö ´ÙÀ½¿¡µµ ¹è¿­ Ç¥½Ã¸¦ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ À¯Çü Áö½ÃÀÚ ´ÙÀ½¿¡µµ ¹è¿­ Ç¥½Ã¸¦ ÇÒ ¼ö ÀÖ´Ù.
int matrix[][]={ {1}, {0, 1, 0}, {0, 0, 1} };
int[][] makeMatrix() { return new int[3][3]; }
int makeMatrix() [][] { return new int[3][3]; }

ÀÚ¹ÙÀÇ ¹è¿­¿¡¼­ ƯÀÌÇÑ Á¡ Çϳª´Â ¹è¿­Àº Ç×»ó °´Ã¼·Î Ãë±ÞµÇ¸ç length¶ó´Â ¼Ó¼ºÀ» °¡Á® ¾ðÁ¦µçÁö ¹è¿­ Å©±â¸¦ ¾Ë ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¹è¿­À» »ç¿ëÇÏ´Â ¾ÆÁÖ °£´ÜÇÑ ¿¹Á¦¸¦ º¸ÀÚ.
// Array.java
class Array {
	public static void main(String args[]) {
		int array[]={ 1, 2, 3, 4, 5 };
		for (int i=0; i < array.length; i++)
			System.out.println("value[" + i + "]=" + array[i]);
	}
}

¿¬»êÀÚÀÇ °æ¿ìµµ C ȤÀº C++¿Í µ¿ÀÏÇÏ´Ù°í »ý°¢ÇÏ¸é µÈ´Ù.

3) Á¦¾î¹®

ÀÚ¹Ù´Â ¿©·¯ °¡Áö ¸é¿¡¼­ C³ª C++¸¦ ´à¾Ò´Ù. ƯÈ÷, Á¦¾î¹®(if, for, while, do {} while, switch, break, continue µî)Àº C¿Í °ÅÀÇ µ¿ÀÏÇÏ´Ù. µû¶ó¼­, ÀÚ¹ÙÀÇ Á¦¾î¹®À» ´Ù·ê ¶§ C¿Í ´Ù¸¥ Á¡¸¸ °£·«È÷ ¼³¸íÇÑ´Ù.
¸ÕÀú °¡Àå ÁÖÀÇÇÒ °ÍÀ¸·Î if³ª for, while ¹®ÀÇ ºÐ±â ±Ù°Å°¡ µÇ´Â °ªÀÌ ÀÚ¹Ù¿¡¼­´Â boolean À¯ÇüÀ̶ó´Â Á¡ÀÌ´Ù.
¿¹¸¦ µé¸é ¹«ÇÑ ·çÇÁ¸¦ Áö½ÃÇÏ´Â while¹®Àº ´ÙÀ½°ú °°´Ù.

while(true) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // ¹«ÇÑ ·çÇÁÀÇ ³»¿ë;
}

C³ª C++¿Í ´Þ¸® boolean À¯ÇüÀÌ ÀÚ¹ÙÀÇ ±âº» À¯ÇüÀÎ °ÍÀ» »ý°¢ÇÏ¸é ´ç¿¬ÇÏ´Ù. C »ç¿ëÀÚ´Â while(1)°ú °°ÀÌ ±¸¹®À» »ç¿ëÇÏ´Â µ¥ Àͼ÷ÇÏ°ÚÁö¸¸ ÀÚ¹Ù¿¡¼­´Â true¶ó´Â ºÒ¸° À¯Çü °ªÀÌ Á¤¼ö·Î Ç¥ÇöµÉ ¼ö ¾øÀ¸¹Ç·Î ÀÌ·¯ÇÑ ±¸¹®Àº ÄÄÆÄÀÏ ½Ã ¹®¹ý ¿¡·¯¸¦ ¹ß»ý½ÃŲ´Ù.
ÁÖÀÇÇØ¾ß ÇÒ ºÎºÐÀº for Á¦¾î¹®ÀÌ´Ù. C++¿¡¼­Ã³·³ Á¦¾î¹® ¾È¿¡¼­ º¯¼ö¸¦ ¼±¾ðÇÒ ¼ö Àִµ¥ ÀÌ °æ¿ì, ÀÌ º¯¼öÀÇ Åë¿ë ¹üÀ§´Â Á¦¾î¹® ³»ºÎÀ̶ó´Â Á¡ÀÌ´Ù.
¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù.

for (int i=0; i<10; i++) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // for Á¦¾î¹®ÀÇ ³»¿ë
}
i++;¡¡ // À߸øµÈ »ç¿ë. for Á¦¾î¹® ³»ºÎ¿¡¼­¸¸ i°¡ Åë¿ëµÈ´Ù.

¶ÇÇϳª ÁÖÀÇÇÒ ºÎºÐÀº break¿Í continue ¹®ÀÌ´Ù.
ÀÚ¹Ù¿¡¼­´Â ÀÌµé ¹®ÀåÀÌ ·¹À̺íÀ» °¡Áú ¼ö ÀÖ´Ù. ·¹À̺íÀÌ ¾ø´Â °æ¿ì´Â C ȤÀº C++¿Í µ¿ÀÏÇÑ ¿ªÇÒÀ» ÇÏÁö¸¸ ·¹À̺íÀ» ÀÎÀÚ·Î °¡Áö´Â °æ¿ì¿¡´Â ÇØ´ç ·¹À̺í·Î ºÐ±âÇÏ°Ô µÈ´Ù. ´ÙÀ½ ¿¹¸¦ º¸ÀÚ.

begin: // ·¹À̺í, ½ÇÁ¦·Î ¿©±â »ç¿ëµÈ continue ¹®Àº ¿©±â·Î ºÐ±âÇÑ´Ù.
for (int i=0; i<10; i++) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // continue ¹® ´ÙÀ½¿¡ ·¹À̺íÀÌ ¾øÀ¸¸é j++¸¦ ¹Ù·Î ¼öÇà
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ for (int j=0; j<10; j++) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ if (isAgain==true) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ continue begin; // beginÀ̶ó´Â ·¹À̺í·Î °£´Ù.
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
}

breakÀÇ °æ¿ì¿¡µµ ¸¶Âù°¡ÁöÀÌ´Ù.

begin: // ·¹À̺í, break begin ¹®Àº ¿©±â·Î ºÐ±â
for (int i=0; i<10; i++) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // ·¹À̺íÀÌ ¾øÀ¸¸é break´Â switch¹®À» ¹þ¾î³ª ÀÌ °÷À¸·Î ºÐ±â
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ switch(value) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ case 1: value++; break;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ case 5: break begin;¡¡ // beginÀ̶ó´Â ·¹À̺í·Î ºÐ±âÇÑ´Ù.
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ default : value--; break;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ }
}

ÀÌ¿Í °°Àº ·¹ÀÌºí »ç¿ë¹ýÀ» º¸¸é C ÇÁ·Î±×·¡¸Ó´Â goto ¿¹¾à¾î¸¦ ¶°¿Ã¸± °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÚ¹Ù¿¡¼­´Â goto ¹®ÀÌ ºñ·Ï ¿¹¾à¾îÀ̱ä ÇÏÁö¸¸ »ç¿ëµÇÁö ¾Ê´Â´Ù.


¾Õ ÆäÀÌÁö µÞ ÆäÀÌÁö »öÀÎ