ÀÚ¹Ù´Â 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) ÆÄÀÏ¿¡¼ È£ÃâµÇ´Â ¸Þ¼Òµå
ÇʵåÀÇ ¼±¾ð ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.
'Çʵå Á¦ÇÑÀÚ' 'À¯Çü' 'Çʵå À̸§';
¿¹) 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:\> java Test value=5
ÀÎÅÍÆäÀ̽º¿Í ÇÔ²² 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(´Ù±¹¾î Áö¿ø °ü·Ã ÆÐÅ°Áö) µîÀÇ ÆÐÅ°ÁöµéÀÌ ÀÖ´Ù.
¿¹¿Ü 󸮴 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++ÀÇ ¹®¹ýÀ» ÁØ¿ëÇؼ »ç¿ëÇÑ´Ù°í º¼ ¼ö ÀÖ´Ù. °£´ÜÇÏ°Ô ÀÚ¹ÙÀÇ ³ª¸ÓÁö ¹®¹ýÀ» ¤¾îº¸ÀÚ.
C++ÀÇ ÁÖ¼®¹®ÀÎ '// ÁÖ¼® ³»¿ë'°ú '/* ÁÖ¼® ³»¿ë */'Àº ±×´ë·Î ÀÚ¹Ù¿¡ »ç¿ëµÈ´Ù. ÀÚ¹Ù¿¡´Â ¶ÇÇϳªÀÇ ÁÖ¼®¹®('/** ¹®¼ ÁÖ¼® */' )ÀÌ Àִµ¥ ÀÌ°ÍÀº ¼±¾ð¹® ¾Õ¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ°í javadoc¶õ À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¿© ¼Ò½º ¼³¸í ¹®¼¸¦ ÀÚµ¿ »ý¼ºÇÒ ¶§ »ç¿ëµÈ´Ù.
ÀÚ¹ÙÀÇ ¹è¿ ¼±¾ðÀº C++¿Í °ÅÀÇ µ¿ÀÏÇÏ´Ù. Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù¸é ÀÚ¹Ù´Â ¹è¿À» ½ºÅÿ¡ ¸¸µå´Â °ÍÀ» Çã¿ëÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. (¾Æ·¡ ¿¹ ÂüÁ¶.) ´Ù½Ã ¸»Çϸé Á÷¿ª º¯¼ö·Î ¹è¿ÀÇ ¸Þ¸ð¸® °ø°£(Å©±â)À» ÇÒ´çÇÏ´Â °ÍÀÌ Çã¿ëµÇÁö ¾Ê±â ¶§¹®¿¡ ¹Ýµå½Ã µ¿ÀûÀ¸·Î ¹è¿À» ÇÒ´çÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. µ¿ÀûÀ¸·Î ¹è¿À» ÇÒ´çÇÏ´Â ¹æ¹ýÀº C++¿¡¼Ã³·³ new ¿¬»êÀÚ¸¦ »ç¿ëÇϰųª ÀÎÀÚ¸¦ ¹Ù·Î ÁöÁ¤ÇÏ´Â µ¿ÀûÀÎ ¹æ¹ýÀÌ ÀÖ´Ù. ´ÙÀ½ ¿¹¸¦ Âü°íÇÏÀÚ.
int matrix[5]={1,2,3,4,5}; // À߸øµÊ. ½ºÅÿ¡ ¹è¿À» ¸¸µéÁö ¾ÊÀ¸¹Ç·Î ÀÚ·áÇüÀ» ¼±¾ðÇÒ ¶§ ¹è¿ Å©±â¸¦ ÁöÁ¤ÇÒ ¼ö ¾ø´Ù. int matrix[5]; // ¸¶Âù°¡Áö·Î À߸øµÊ.ÀÚ¹ÙÀÇ ¹è¿¿¡¼ ƯÀÌÇÑ Á¡ Çϳª´Â ¹è¿Àº Ç×»ó °´Ã¼·Î Ãë±ÞµÇ¸ç length¶ó´Â ¼Ó¼ºÀ» °¡Á® ¾ðÁ¦µçÁö ¹è¿ Å©±â¸¦ ¾Ë ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¹è¿À» »ç¿ëÇÏ´Â ¾ÆÁÖ °£´ÜÇÑ ¿¹Á¦¸¦ º¸ÀÚ.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]; }
// 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++¿Í µ¿ÀÏÇÏ´Ù°í »ý°¢ÇÏ¸é µÈ´Ù.
ÀÚ¹Ù´Â ¿©·¯ °¡Áö ¸é¿¡¼ 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 ¹®ÀÌ ºñ·Ï ¿¹¾à¾îÀ̱ä ÇÏÁö¸¸ »ç¿ëµÇÁö ¾Ê´Â´Ù.