JavaRush /Java Blog /Random-KO /ํด๋ž˜์Šค ์ƒ์„ฑ์ž. ์ž๋ฐ” JDK 1.5
articles
๋ ˆ๋ฒจ 15

ํด๋ž˜์Šค ์ƒ์„ฑ์ž. ์ž๋ฐ” JDK 1.5

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
ํด๋ž˜์Šค ์ƒ์„ฑ์ž.  ์ž๋ฐ” JDK 1.5 - 1

์ƒ์„ฑ์ž์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ์ •๋ณด

ะšะพะฝัั‚ั€ัƒะบั‚ะพั€ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ธ ๋ฉ”์†Œ๋“œ์™€ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋””์ž์ด๋„ˆ์˜ ํŠน์„ฑ:
  • ์ƒ์„ฑ์ž์˜ ์ด๋ฆ„์€ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ด€๋ก€์ ์œผ๋กœ ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ‘œ์‹œ๋˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ช…์‚ฌ์ž…๋‹ˆ๋‹ค).
  • ๋ชจ๋“  ํด๋ž˜์Šค์—๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑํ•˜์ง€ ์•Š๋”๋ผ๋„ Java ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋น„์–ด ์žˆ๊ณ  ์Šˆํผํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž๋Š” ๋ฉ”์†Œ๋“œ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋ฉ”์†Œ๋“œ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋กœ ๊ฐ„์ฃผ๋˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ƒ์†๋˜๊ฑฐ๋‚˜ ์žฌ์ •์˜๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž๋Š” ์ƒ์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค์—๋Š” ์—ฌ๋Ÿฌ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ƒ์„ฑ์ž๊ฐ€ ์˜ค๋ฒ„๋กœ๋“œ๋˜์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ž๋™์œผ๋กœ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ฝ”๋“œ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž๋Š” ๋ฐ˜ํ™˜ ์œ ํ˜•์ด ์—†์œผ๋ฉฐ ์œ ํ˜•์ผ ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค void. ์œ ํ˜•์ด ๋ฐ˜ํ™˜๋˜๋ฉด voidํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋”๋ผ๋„ ๋” ์ด์ƒ ์ƒ์„ฑ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.
  • ์—ฐ์‚ฐ์ž๋Š” ์ƒ์„ฑ์ž์—์„œ ํ—ˆ์šฉ๋˜์ง€๋งŒ return๋ฐ˜ํ™˜ ๊ฐ’ ์—†์ด ๋น„์–ด๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž ๋Š” ์•ก์„ธ์Šค ์ˆ˜์ •์ž์˜ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ •์ž ์—†์ด , ๋˜๋Š” ์ˆ˜์ •์ž ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ public์žˆ์Šต๋‹ˆ๋‹ค .protectedprivate
  • ์ƒ์„ฑ์ž๋Š” ์ˆ˜์ •์ž abstract, final, native๋˜๋Š” static์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค synchronized.
  • ํ‚ค์›Œ๋“œ๋Š” this๋™์ผํ•œ ํด๋ž˜์Šค์˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์ด์— ๋Œ€ํ•œ ํ˜ธ์ถœ์€ ์ƒ์„ฑ์ž์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ‚ค์›Œ๋“œ๋Š” super์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์ด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋Š” ์ƒ์„ฑ์ž์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • super์ƒ์„ฑ์ž๊ฐ€ ์ธ์ˆ˜ ์œ ๋ฌด์— ๊ด€๊ณ„์—†์ด ์กฐ์ƒ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ธ์ˆ˜ ์—†์ด ์กฐ์ƒ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์ƒ์„ฑ์ž

๋ชจ๋“  ํด๋ž˜์Šค์—๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑํ•˜์ง€ ์•Š๋”๋ผ๋„ Java ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ์ƒ์„ฑ์ž๋Š” ๋น„์–ด ์žˆ์œผ๋ฉฐ ์Šˆํผํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ๋‹น์‹ ์ด ์“ด๋‹ค๋ฉด :
public class Example {}
๊ทธ๋Ÿฌ๋ฉด ์ด๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
public class Example
{
     Example()
     {
          super;
     }
}
์ด ๊ฒฝ์šฐ ์กฐ์ƒ ํด๋ž˜์Šค๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •๋˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  Java ํด๋ž˜์Šค๊ฐ€ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋ฏ€๋กœ Objectํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค Object. ํด๋ž˜์Šค๊ฐ€ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•˜์ง€๋งŒ ์˜ค๋ฒ„๋กœ๋“œ๋œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ์—†๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋งค๊ฐœ ๋ณ€์ˆ˜ ์—†๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java 1.5 ๋ฒ„์ „๋ถ€ํ„ฐ ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜์™€ ํ•จ๊ป˜ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜๋ฅผ ๊ฐ–๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜๊ฐ€ ๋น„์–ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์˜ˆ์ œ๋Š” ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์ง€๋งŒ ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜๊ฐ€ ํฌํ•จ๋œ ์ƒ์„ฑ์ž์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผ ๋ฐ ์‹คํ–‰๋˜๊ณ  ์ฝ”๋“œ ์ค„์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค DefaultDemo dd = new DefaultDemo(). ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค DefaultDemo(int ... v). ๋‹น์—ฐํžˆ ์ด ๊ฒฝ์šฐ์—๋Š” JSDK 1.5๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผDefaultDemo.java
class DefaultDemo
{
 DefaultDemo(String s)
 {
  System.out.print("DefaultDemo(String)");
 }
 /*
 DefaultDemo(int ... v)
 {
  System.out.println("DefaultDemo(int ...)");
 }
 */

 public static void main(String args[])
 {
  DefaultDemo dd = new DefaultDemo();
 }
}
์ฃผ์„ ์ฒ˜๋ฆฌ๊ฐ€ ์ œ๊ฑฐ๋œ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋กœ๊ทธ๋žจ ์ถœ๋ ฅ ๊ฒฐ๊ณผ:
DefaultDemo(int ...)
๊ทธ๋Ÿฌ๋‚˜ ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ์ž๋ฅผ ์ „ํ˜€ ์ •์˜ํ•˜์ง€ ์•Š๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์—๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ๋Œ€์ฒด๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์ƒ์„ฑ์ž

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‹ค์Œ ์ž‘์—…์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค ์ค‘์—์„œ ๊ฐ์ฒด ํด๋ž˜์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์นดํƒˆ๋กœ๊ทธ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํด๋ž˜์Šค๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ํด๋ž˜์Šค์˜ ์ •์  ํ•„๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ •์  ํ•„๋“œ๋Š” ํ•œ ๋ฒˆ๋งŒ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค ์ƒ์„ฑ์ž๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ๋˜๊ณ  ์ดˆ๊ธฐํ™”๋œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ํ˜•์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ์ฐธ์กฐ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ‘œํ˜„์‹์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค. newInstance()ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค java.lang.Class. ์ด ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์ด ์—†๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋“œ

๋™์ผํ•œ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” ๋™์ผํ•œ ์ด๋ฆ„๊ณผ ๋‹ค๋ฅธ ์„œ๋ช…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์†์„ฑ์„ ์กฐํ•ฉ ๋˜๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค์— ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์œผ๋ฉด ์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ์ƒ์„ฑ์ž

์ƒ์„ฑ์ž์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜์™€ ์œ ํ˜•๋ฟ ์•„๋‹ˆ๋ผ ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์— ์žˆ๋Š” ํ•ด๋‹น ์œ ํ˜•์˜ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ์œ ํ˜•์€ ๊ณ ๋ ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์žฅ์€ ์–ด๋–ค ์˜๋ฏธ์—์„œ Java๊ฐ€ ์˜ค๋ฒ„๋กœ๋“œ๋œ ์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Java๋Š” ๋ฐ˜ํ™˜ ์œ ํ˜•์ด ์•„๋‹Œ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜, ์œ ํ˜• ๋ฐ ์œ ํ˜• ์ˆœ์„œ์— ๋”ฐ๋ผ ์˜ค๋ฒ„๋กœ๋“œ๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌ๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” type ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค void. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ์œ ์‚ฌํ•˜๋”๋ผ๋„ ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” ์ด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํŒŒ์ผVoidDemo.java
class VoidDemo
{
 /**
  * ะญั‚ะพ ะบะพะฝัั‚ั€ัƒะบั‚ะพั€
  */
 VoidDemo()
 {
  System.out.println("Constructor");
 }

 /**
  * ะ ัั‚ะพ ัƒะถะต ะพะฑั‹ั‡ะฝั‹ะน ะผะตั‚ะพะด, ะดะฐะถะต ะฝะต ัะผะพั‚ั€ั ะฝะฐ ัั…ะพะดัั‚ะฒะพ ั
  * ะธะผะตะฝะตะผ ะบะปะฐััะฐ, ะฟะพัะบะพะปัŒะบัƒ ะธะผะตะตั‚ัั ะฒะพะทะฒั€ะฐั‰ะฐะตะผั‹ะน ั‚ะธะฟ void
  */
 void VoidDemo()
 {
  System.out.println("Method");
 }

 public static void main(String s[])
 {
  VoidDemo m = new VoidDemo();
 }
}
๊ฒฐ๊ณผ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค์Œ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
Constructor
์ด๋Š” ์ƒ์„ฑ์ž๊ฐ€ ๋ฐ˜ํ™˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๋ฉ”์„œ๋“œ์ž„์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒ์„ฑ์ž์—๋Š” ์„ธ ๊ฐ€์ง€ ์ˆ˜์ •์ž public, private๋˜๋Š” ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค protected. ์ด์ œ ์˜ˆ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŒŒ์ผVoidDemo2.java
class VoidDemo2
{
 /**
  * ะญั‚ะพ ะบะพะฝัั‚ั€ัƒะบั‚ะพั€
  */
 public VoidDemo2()
 {
  System.out.println("Constructor");
 }

 /**
  * ะ ัั‚ะพ ัƒะถะต ะพะฑั‹ั‡ะฝั‹ะน ะผะตั‚ะพะด, ะดะฐะถะต ะฝะต ัะผะพั‚ั€ั ะฝะฐ ัั…ะพะดัั‚ะฒะพ ั
  * ะธะผะตะฝะตะผ ะบะปะฐััะฐ, ะฟะพัะบะพะปัŒะบัƒ ะธะผะตะตั‚ัั ะฒะพะทะฒั€ะฐั‰ะฐะตะผั‹ะน ั‚ะธะฟ void
  */
 private void VoidDemo2()
 {
  System.out.println("Method");
 }

 public static void main(String s[])
 {
  VoidDemo2 m = new VoidDemo2();
 }
}
์ƒ์„ฑ์ž์— ์—ฐ์‚ฐ์ž๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ return์žˆ์ง€๋งŒ ๋ฐ˜ํ™˜ ๊ฐ’ ์—†์ด ๋นˆ ์—ฐ์‚ฐ์ž๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผReturnDemo.java
class ReturnDemo
{
 /**
  * ะ’ ะบะพะฝัั‚ั€ัƒะบั‚ะพั€ะต ะดะพะฟัƒัะบะฐะตั‚ัั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะพะฟะตั€ะฐั‚ะพั€ะฐ
  * return ะฑะตะท ะฟะฐั€ะฐะผะตั‚ั€ะพะฒ.
  */
 public ReturnDemo()
 {
  System.out.println("Constructor");
  return;
 }

 public static void main(String s[])
 {
  ReturnDemo r = new ReturnDemo();
 }
}

๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ์ƒ์„ฑ์ž

Java SDK 1.5์—๋Š” ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ ค์˜จ ๋„๊ตฌ์ธ ์ƒ์„ฑ์ž์™€ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ๋‹ค์–‘ํ•œ ์ˆ˜์˜ ๋ฌธ์„œ๊ฐ€ ๋‘ ๊ฐ€์ง€ ๋ถˆํŽธํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ฒซ ๋ฒˆ์งธ๋Š” ์ตœ๋Œ€ ์ธ์ˆ˜ ์ˆ˜๋ฅผ ์†Œ์ˆ˜๋กœ ์ œํ•œํ•˜๊ณ  ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋œ ์ธ์ˆ˜ ๋ชฉ๋ก์˜ ๊ฐ ๋ฒ„์ „์— ๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ ๋ฉ”์„œ๋“œ์˜ ์˜ค๋ฒ„๋กœ๋“œ๋œ ๋ฒ„์ „์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์‚ฌ์ „์— ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๊ฒƒ๊ณผ ๋งŽ์€ ์ธ์ˆ˜๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ธ์ˆ˜๋Š” ๋ฐฐ์—ด์— ๋ฐฐ์น˜๋˜์—ˆ์œผ๋ฉฐ ์ด ๋ฐฐ์—ด์ด ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜๋Š” ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”๋ฅผ ํ†ตํ•œ ํ›„์† ์กฐ์ž‘์— ๊ฐ€์žฅ ์ž์ฃผ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ๋˜๋Š” ์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์„œ๋“œ ์ธ์ˆ˜ ์ค‘ ์ผ๋ถ€๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜๋Š” ๋ฐฐ์—ด์ด๋ฉฐ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ€๋ณ€ ๊ฐœ์ˆ˜์˜ ์ธ์ˆ˜๊ฐ€ ์žˆ๋Š” ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” Checking๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
class Checking
{
 public Checking(int ... n)
 {
 }
}
๋ฌธ์ž ์กฐํ•ฉ ...์€ ๊ฐ€๋ณ€ ๊ฐœ์ˆ˜์˜ ์ธ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋ฉฐ ์ด๋Ÿฌํ•œ ์ธ์ˆ˜๊ฐ€ ์ฐธ์กฐ ๊ฐ’์ด ๋ณ€์ˆ˜ n์— ํฌํ•จ๋œ ๋ฐฐ์—ด์— ์ €์žฅ๋  ๊ฒƒ์ž„์„ ์ปดํŒŒ์ผ๋Ÿฌ์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ฐœ์ˆ˜์˜ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ˆ˜๋Š” ์ž๋™์œผ๋กœ ๋ฐฐ์—ด์— ๋ฐฐ์น˜๋˜๊ณ  n์„ ํ†ตํ•ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” 0์ž…๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์€ ๊ฐ€๋ณ€ ๊ธธ์ด ์ธ์ˆ˜์™€ ํ•จ๊ป˜ ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐ€๋ณ€ ๊ฐœ์ˆ˜์˜ ์ธ์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์˜ ๋งˆ์ง€๋ง‰์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
class Checking
{
 public Checking(String s, int ... n)
 {
 }
}
๋งค์šฐ ๋ช…๋ฐฑํ•œ ์ œํ•œ์€ ๊ฐ€๋ณ€ ๊ธธ์ด ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜์™€ ๊ด€๋ จ๋ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์—๋Š” ๊ฐ€๋ณ€ ๊ธธ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๊ฐ€๋ณ€ ๊ธธ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋๋‚˜๊ณ  ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์‹œ์ž‘๋˜๋Š” ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
class Checking
{
 public Checking(String s, int ... n, double ... d) //ะžะจะ˜ะ‘ะšะ!
 {
 }
}
ํŒŒ์ผ Checking.java ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž๋™์ฐจ ๋ฒˆํ˜ธํŒ์„ ์ธ์‹ํ•˜๊ณ , ๋‚ฎ ๋™์•ˆ ๊ฐ ์ž๋™์ฐจ๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์ง€์—ญ์˜ ์‚ฌ๊ฐํ˜• ์ˆ˜๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ๋น„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€์—ญ ์ง€๋„์— ๋”ฐ๋ผ ๋‚ฎ ๋™์•ˆ ์ฃผ์–ด์ง„ ๋‘ ๊ฐœ์˜ ๊ด‘์žฅ, ์ฆ‰ 22๊ฐœ์™€ 15๊ฐœ๋ฅผ ๋ฐฉ๋ฌธํ•œ ์ฐจ๋Ÿ‰์„ ๊ธฐ๋ก๋œ ์ฐจ๋Ÿ‰์˜ ์ด ์งˆ๋Ÿ‰ ์ค‘์—์„œ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž๋™์ฐจ๊ฐ€ ๋‚ฎ ๋™์•ˆ ๋งŽ์€ ๊ด‘์žฅ์„ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์•„๋งˆ๋„ ๋‹จ ํ•œ ๊ณณ๋งŒ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ผ์ž…๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๋ฐฉ๋ฌธํ•˜๋Š” ์‚ฌ๊ฐํ˜•์˜ ์ˆ˜๋Š” ์ž๋™์ฐจ์˜ ๋ฌผ๋ฆฌ์  ์†๋„์— ์˜ํ•ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์ƒ์„ฑ์ž๊ฐ€ ์ž๋™์ฐจ ๋ฒˆํ˜ธ๋ฅผ ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ  ํ•ด๋‹น ์ง€์—ญ์˜ ๋ฐฉ๋ฌธํ•œ ์‚ฌ๊ฐํ˜• ์ˆ˜(๊ทธ ์ˆ˜๋Š” ๊ฐ€๋ณ€์ ์ผ ์ˆ˜ ์žˆ์Œ)๋ฅผ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ์ž๋™์ฐจ๊ฐ€ ๋‘ ๊ฐœ์˜ ์‚ฌ๊ฐํ˜•์— ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๊ทธ๋ ‡๋‹ค๋ฉด ํ™”๋ฉด์— ํ•ด๋‹น ๋ฒˆํ˜ธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•˜๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋Š” ์ฃผ๋กœ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์œ ํ˜•(์›์‹œํ˜•)
  • ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ.
๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ์ด๋ผ๋Š” ์šฉ์–ด๋Š” ํ˜ธ์ถœ ๋ชจ๋“ˆ์ด ์ „๋‹ฌํ•œ ๊ฐ’์„ ์ƒ์„ฑ์ž๊ฐ€ ์ˆ˜์‹ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋Œ€์กฐ์ ์œผ๋กœ, ์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ์€ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Java๋Š” ๊ฐ’๋ณ„ ํ˜ธ์ถœ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’๋ณ„ ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋งํฌ ๊ฐ’๋ณ„. Java๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ฐธ์กฐ๋ณ„ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์™€ ์ผ๋ถ€ ์ฑ…์˜ ์ €์ž๊ฐ€ ์ด๋ฅผ ์ฃผ์žฅํ•˜์ง€๋งŒ). ๊ฐ์ฒด๋ฅผ Java์— ์ „๋‹ฌํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ฐธ์กฐ๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค ! ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ƒ์„ฑ์ž๋Š” ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์˜ ๋ณต์‚ฌ๋ณธ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž๋Š” ๊ธฐ๋ณธ(๊ธฐ๋ณธ) ์œ ํ˜•์˜ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž๋Š” ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž๋Š” ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฐธ์กฐ๋ฅผ ์ƒˆ ๊ฐ์ฒด์— ๋‹ค์‹œ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ƒ์„ฑ์ž๋Š” ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ์˜ˆ๋Š” Java์—์„œ ์ƒ์„ฑ์ž์— ๋Œ€ํ•œ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์˜ˆ๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฌ๋ณธ์˜ ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ์ ์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผEmpoyee.java
class Employee
{
 Employee(String x, String y)
 {
  String temp = x;
  x = y;
  y = temp;
 }
 public static void main(String args[])
 {
  String name1 = new String("Alice");
  String name2 = new String("Mary");
  Employee a = new Employee(name1, name2);
  System.out.println("name1="+name1);
  System.out.println("name2="+name2);
 }
}
ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
name1=Alice
name2=Mary
Java๊ฐ€ ์ฐธ์กฐ๋ณ„ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ ์ƒ์„ฑ์ž๋Š” ์ด ์˜ˆ์—์„œ name1๋ฐ ๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค name2. name1์ƒ์„ฑ์ž๋Š” ์‹ค์ œ๋กœ ๋ฐ ๋ณ€์ˆ˜ ์— ์ €์žฅ๋œ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ๊ตํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค name2. ์ด๋Š” ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ด๋Ÿฌํ•œ ์ฐธ์กฐ์˜ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ์ดˆ๊ธฐํ™”๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒ์„ฑ์ž๋Š” ๋ณต์‚ฌ๋ณธ์„ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋ฉด x ๋ฐ y ๋ณ€์ˆ˜๋Š” ์‚ญ์ œ๋˜๊ณ  ์›๋ž˜ ๋ณ€์ˆ˜๋Š” name1๊ณ„์† name2ํ•ด์„œ ์ด์ „ ๊ฐœ์ฒด๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž์— ์ „๋‹ฌ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž๋Š” ๊ธฐ๋ณธ ์œ ํ˜•์˜ ์ „๋‹ฌ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒ์„ฑ์ž๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ณ ๋ คํ•ด ๋ณด์‹ญ์‹œ์˜ค: FileSalary1.java
class Salary1
{
 Salary1(int x)
 {
  x = x * 3;
  System.out.println("x="+x);
 }
 public static void main(String args[])
 {
  int value = 1000;
  Salary1 s1 = new Salary1(value);
  System.out.println("value="+value);
 }
}
ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
x=3000
value=1000
๋ถ„๋ช…ํžˆ ์ด ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ ์œ ํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ์™€ value๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค 1000. ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ ๊ฐ€์ง€ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  1. ๋ณ€์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’ (์˜ˆ: ์ˆซ์ž ) x์˜ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค .value1000
  2. ๋ณ€์ˆ˜์˜ ๊ฐ’์€ x3๋ฐฐ๊ฐ€ ๋˜์–ด ์ด์ œ ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค 3000. ๊ทธ๋Ÿฌ๋‚˜ ๋ณ€์ˆ˜์˜ ๊ฐ’์€ value์™€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค 1000.
  3. ์ƒ์„ฑ์ž๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ  ๋ณ€์ˆ˜๋Š” x๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์˜ˆ์—์„œ๋Š” ๊ฐœ์ฒด ์ฐธ์กฐ ๊ฐ’์ด ๋ฉ”์„œ๋“œ์— ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์ง์›์˜ ๊ธ‰์—ฌ๊ฐ€ ์„ธ ๋ฐฐ๋กœ ๋Š˜์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผSalary2.java
class Salary2
{
 int value = 1000;
 Salary2()
 {
 }
 Salary2(Salary2 x)
 {
  x.value = x.value * 3;
 }
 public static void main(String args[])
 {
  Salary2 s1 = new Salary2();
  Salary2 s2 = new Salary2(s1);
  System.out.println("s1.value=" +s1.value);
  System.out.println("s2.value="+s2.value);
 }
}
ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
s1.value=3000
s2.value=1000
๊ฐ์ฒด ์ฐธ์กฐ์˜ ๊ฐ’์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ผ์ธ์„ ์‹คํ–‰ํ•  ๋•Œ Salary2 s2 = new Salary2(s1); ์ƒ์„ฑ์ž์—๋Š” Salary2(Salary x)๋ณ€์ˆ˜ object ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๊ฐ’์ด ์ „๋‹ฌ๋˜๊ณ  ์ƒ์„ฑ์ž๋Š” ์ƒ์„ฑ์ž ๋‚ด๋ถ€์— ์ƒ์„ฑ๋œ ๋ณต์‚ฌ๋ณธ๋„ ๋ณ€์ˆ˜ object ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ ๋•Œ๋ฌธ์— s1์‚ฌ์‹ค์ƒ ๊ธ‰์—ฌ๋ฅผ ์„ธ ๋ฐฐ๋กœ ๋Š˜๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค . s1.value(Salary x)s1

ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ์— ์˜ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ์ƒ์„ฑ์ž.

์˜ค๋ฒ„๋กœ๋“œ๋œ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ถ•์†Œ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ํ˜•์‹(์˜ˆ: int <- double)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์˜ค๋ฒ„๋กœ๋“œ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ถ•์†Œ๋œ ๊ฐ’์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: ํŒŒ์ผPrimitive.java
class Primitive
{
 Primitive(double d)
 {
  d = d + 10;
  System.out.println("d="+d);
 }
 public static void main(String args[])
 {
  int i = 20;
  Primitive s1 = new Primitive(i);
 }
}
ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
d=30.0
ํด๋ž˜์Šค์— Primitive์œ ํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์—†๋”๋ผ๋„ int์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž๋Š” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค double. ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ๋ณ€์ˆ˜๋Š” type ์—์„œ type ์œผ๋กœ iํ™•์žฅ๋ฉ๋‹ˆ๋‹ค . ๋ฐ˜๋Œ€ ์˜ต์…˜์ธ ๋ณ€์ˆ˜๊ฐ€ ์œ ํ˜• ์ด๊ณ  ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์ƒํ™ฉ์—์„œ๋Š” ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. intdoubleidoubleint

์ƒ์„ฑ์ž ํ˜ธ์ถœ ๋ฐ ์—ฐ์‚ฐ์žnew

์ƒ์„ฑ์ž๋Š” ํ•ญ์ƒ ์—ฐ์‚ฐ์ž์— ์˜ํ•ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค new. ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด new์ƒ์„ฑ์ž๋Š” ํ•ญ์ƒ ์ƒˆ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์—ญ์ง๋ ฌํ™”๋˜๋Š” ๊ฐœ์ฒด๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ƒ์„ฑ์ž๊ฐ€ ์ƒˆ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋Œ€์‹  ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํ˜•์„ฑํ•˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋Œ€์‹  ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: ํŒŒ์ผSalary3.java
class Salary3
{
 int value = 1000;
 Salary3()
 {
 }
 Salary3(Salary3 x)
 {
  x.value = x.value * 3;
 }
 public static void main(String args[])
 {
  Salary3 s1 = new Salary3();
  System.out.println("First object creation: "+s1.value);

  Salary3 s2 = new Salary3(s1);
  System.out.println("Second object creation: "+s2.value);
  System.out.println("What's happend with first object?:"+s1.value);

  Salary3 s3 = new Salary3(s1);
  System.out.println("Third object creation: "+s3.value);
  System.out.println("What's happend with first object?:"+s1.value);
 }
}
ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
First object creation: 1000
Second object creation: 1000
What's happend with first object?: 3000
Third object creation: 1000
What's happend with first object?: 9000
๋จผ์ €, ๋ผ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ Salary3 s1 = new Salary3(); ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ, ๋ผ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Salary3 s2 = new Salary3(s1); ๋˜๋Š” ๋ฌธ์ž์—ด Salary3 s3 = new Salary3(s1); ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ฉฐ, ๊ทธ๋Ÿฌ๋ฉด ๋™์ผํ•œ ๊ฐ’์„ ์ €์žฅํ•  ๊ฒƒ s1.value s2.value์ž…๋‹ˆ๋‹ค . ์‹ค์ œ๋กœ ์ค„์„ ์„œ์„œ ; ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ƒˆ ๊ฐœ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๊ฐœ์ฒด์˜ ์ƒํƒœ๋Š” ์ƒ์„ฑ์ž ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๊ฐœ์ฒด์— ์ฐธ์กฐ ๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ผ์ธ์„ ์‹คํ–‰ํ•  ๋•Œ ; ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ƒˆ ๊ฐœ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๊ฐœ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋‹ค์‹œ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค . s3.value1000Salary3 s2 = new Salary3(s1)s2s1Salary3 s3 = new Salary3(s1)s3s1

์ƒ์„ฑ์ž ๋ฐ ์ดˆ๊ธฐํ™” ๋ธ”๋ก, ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์‹œ ์ž‘์—… ์ˆœ์„œ

๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์ƒ์„ฑ์ž ์„น์…˜์—๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ์ž‘์—…์ด ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—๋Š” ํด๋ž˜์Šค ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ์ž‘์—…ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด ํ”„๋กœ์„ธ์Šค์—๋„ ๋‚ด๋ถ€ ์ˆœ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํ•„๋“œ๋Š” ๊ธฐ๋ณธ๊ฐ’(0, false ๋˜๋Š” null)์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.
  2. ๋ชจ๋“  ํ•„๋“œ ์ดˆ๊ธฐํ™” ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ดˆ๊ธฐํ™” ๋ธ”๋ก์€ ํด๋ž˜์Šค ์„ ์–ธ์— ๋‚˜์—ด๋œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  3. ์ƒ์„ฑ์ž์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํ˜ธ์ถœ๋œ ์ƒ์„ฑ์ž๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  4. ์ƒ์„ฑ์ž์˜ ๋ณธ๋ฌธ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
Java์—๋Š” ํด๋ž˜์Šค์˜ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฏ€๋กœ ์ƒ์„ฑ์ž๋Š” ์ดˆ๊ธฐํ™”์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ ์–ธ์— ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ์ดˆ๊ธฐํ™” ๋ธ”๋ก์— ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ์ž์—์„œ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๋‹น์—ฐํžˆ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ์ •๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํด๋ž˜์Šค๊ฐ€ ์˜ˆ์ œ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
class Initialization
{
 int i;
 short z = 10;
 static int x;
 static float y;
 static
 {
  x = 2000;
  y = 3.141;
 }
 Initialization()
 {
  System.out.println("i="+i);
  System.out.println("z="+z);
  z = 20;
  System.out.println("z="+z);
 }
}
์œ„์˜ ์˜ˆ์—์„œ ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ ์ˆœ์„œ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ์ •์  ๋ณ€์ˆ˜๋Š” ๋จผ์ € ๊ธฐ๋ณธ๊ฐ’ x์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. y๋‹ค์Œ์œผ๋กœ ์ •์  ์ดˆ๊ธฐํ™” ๋ธ”๋ก์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ณ€์ˆ˜๊ฐ€ i๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜๊ณ  ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค z. ๋‹ค์Œ์œผ๋กœ ๋””์ž์ด๋„ˆ๋Š” ์ž‘์—…์— ์ฐฉ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์ƒ์„ฑ์ž ํ˜ธ์ถœ์€ ํ•„๋“œ๊ฐ€ ์„ ์–ธ๋œ ์ˆœ์„œ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž์™€ ์ƒ์†

์ƒ์„ฑ์ž๋Š” ์ƒ์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
public class Example
{
 Example()
 {
 }
 public void sayHi()
 {
  system.out.println("Hi");
 }
}

public class SubClass extends Example
{
}
ํด๋ž˜์Šค๋Š” ์ƒ์œ„ ํด๋ž˜์Šค์— ์ •์˜๋œ SubClass๋ฉ”์„œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค . sayHi()๋™์‹œ์— Example()์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์— ์ƒ์†๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค SubClass.

this์ƒ์„ฑ์ž์˜ ํ‚ค์›Œ๋“œ

this์ƒ์„ฑ์ž๋Š” ๋™์ผํ•œ ํด๋ž˜์Šค์— ์žˆ์ง€๋งŒ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์ด ๋‹ค๋ฅธ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค . ์ƒ์„ฑ์ž๊ฐ€ ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ this์ฒซ ๋ฒˆ์งธ ์ค„์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ด ๊ทœ์น™์„ ๋ฌด์‹œํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: ํŒŒ์ผThisDemo.java
public class ThisDemo
{
 String name;
 ThisDemo(String s)
 {
  name = s;
     System.out.println(name);
 }
 ThisDemo()
 {
  this("John");
 }
 public static void main(String args[])
 {
  ThisDemo td1 = new ThisDemo("Mary");
  ThisDemo td2 = new ThisDemo();
 }
}
ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Mary
John
์ด ์˜ˆ์—๋Š” ๋‘ ๊ฐœ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋ฌธ์ž์—ด ์ธ์ˆ˜๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ƒ์„ฑ์ž๋Š” ์ธ์ˆ˜๋ฅผ ๋ฐ›์ง€ ์•Š์œผ๋ฉฐ ๋‹จ์ˆœํžˆ ๊ธฐ๋ณธ ์ด๋ฆ„ "John"์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ข…์ข… ํ•„์š”ํ•œ ํ•„๋“œ ๊ฐ’์„ ๋ช…์‹œ์ ์œผ๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

super์ƒ์„ฑ์ž์˜ ํ‚ค์›Œ๋“œ

super์ƒ์„ฑ์ž๋Š” ์Šˆํผํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค . ์ƒ์„ฑ์ž๊ฐ€ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ super์ด ํ˜ธ์ถœ์€ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค: ํŒŒ์ผSuperClassDemo.java
public class SuperClassDemo
{
 SuperClassDemo()
 {
 }
}

class Child extends SuperClassDemo
{
 Child()
 {
  super();
 }
}
์ด ๊ฐ„๋‹จํ•œ ์˜ˆ์—์„œ ์ƒ์„ฑ์ž์—๋Š” ํด๋ž˜์Šค ์™ธ์—๋„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” Child()ํ˜ธ์ถœ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค . ํ•˜์œ„ ํด๋ž˜์Šค ์ƒ์„ฑ์ž์—์„œ ์‹คํ–‰๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ˆœ์„œ๋Š” ํ•ญ์ƒ ๋™์ผํ•˜๋ฉฐ . ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ํด๋ž˜์Šค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ฐ ์Šˆํผํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ(๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์Œ) ์ƒ์„ฑ์ž๊ฐ€ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์€ ์ƒ์„ฑ์ž๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‹œ๊ธฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํŒŒ์ผsuper()SuperClassDemoChildsupersuper()Call.java
//ะกะพะทะดะฐั‚ัŒ ััƒะฟะตั€ะบะปะฐัั A
class A
{
 A()
 {
  System.out.println("Inside A constructor.");
 }
}

//ะกะพะทะดะฐั‚ัŒ ะฟะพะดะบะปะฐัั B, ั€ะฐััˆะธั€ััŽั‰ะธะน ะบะปะฐัั A
class B extends A
{
 B()
 {
  System.out.println("Inside B constructor.");
 }
}

//ะกะพะทะดะฐั‚ัŒ ะบะปะฐัั (C), ั€ะฐััˆะธั€ััŽั‰ะธะน ะบะปะฐัั ะ’
class C extends B
{
 C()
 {
  System.out.println("Inside C constructor.");
 }
}

class Call
{
 public static void main(String args[])
 {
  C c = new C();
 }
}
์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ:
Inside A constructor.
Inside B constructor.
Inside C constructor.
์ƒ์„ฑ์ž๋Š” ํด๋ž˜์Šค ์ข…์† ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์–ด๋Š ์ •๋„ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šˆํผํด๋ž˜์Šค๋Š” ํ•˜์œ„ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ง€์‹์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ดˆ๊ธฐํ™”๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์„œ๋ธŒํด๋ž˜์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ดˆ๊ธฐํ™”๋ณด๋‹ค ๋จผ์ € ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ์ƒ์„ฑ์ž

๋Ÿฐํƒ€์ž„ ์œ ํ˜• ์‹๋ณ„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•˜๋Š” Java ์–ธ์–ด์˜ ๊ฐ•๋ ฅํ•œ ํ•ต์‹ฌ ์›์น™ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์œ ํ˜• ์บ์ŠคํŒ…์œผ๋กœ๋ถ€ํ„ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ๋ณดํ˜ธํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์ด ์‚ฌ์ „์— ์•Œ๋ ค์ง€์ง€ ์•Š๊ณ  ๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •๋˜๋Š” ๊ฐœ์ฒด ๊ทธ๋ฃน์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ ํ˜• ๋น„ํ˜ธํ™˜์„ฑ๊ณผ ๊ด€๋ จ๋œ ์˜ค๋ฅ˜๋Š” ๋Ÿฐํƒ€์ž„ ๋‹จ๊ณ„์—์„œ๋งŒ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ฐพ์•„์„œ ์ œ๊ฑฐํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Java 2 5.0์— ์‚ฌ์šฉ์ž ์ •์˜ ์œ ํ˜•์ด ๋„์ž…๋˜๋ฉด์„œ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋Ÿฐํƒ€์ž„์—์„œ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์œผ๋กœ ์ด๋™ํ•˜๊ณ  ๋ˆ„๋ฝ๋œ ์œ ํ˜• ์•ˆ์ „์„ฑ ์ค‘ ์ผ๋ถ€๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Object์œ ํ˜•์—์„œ ๊ตฌ์ฒด์ ์ธ ์œ ํ˜•์œผ๋กœ ์ด๋™ํ•  ๋•Œ ๋ช…์‹œ์ ์ธ ์œ ํ˜• ์บ์ŠคํŒ…์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ์œ ํ˜• ์‚ฌ์šฉ์ž ์ •์˜ ๋„๊ตฌ๋Š” ๊ฐ์ฒด์—๋งŒ ์ž‘๋™ํ•˜๋ฉฐ ํด๋ž˜์Šค ์ƒ์† ํŠธ๋ฆฌ ์™ธ๋ถ€์— ์žˆ๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์บ์ŠคํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์œ ํ˜• ๋ถˆ์ผ์น˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ํ›จ์”ฌ ๋” ์ž์ฃผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ์œ ํ˜•์€ ์ƒ์„ฑ์ž์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ์œ ํ˜•์ด ์•„๋‹ˆ๋”๋ผ๋„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
class GenConstructor
{
 private double val;
 <T extends Number> GenConstructor(T arg)
 {
   val = arg.doubleValue();
 }

 void printValue()
 {
  System.out.println("val: "+val);
 }
}

class GenConstructorDemo
{
 public static void main(String args[])
 {
  GenConstructor gc1 = new GenConstructor(100);
  GenConstructor gc2 = new GenConstructor(123.5F);

  gc1.printValue();
  gc2.printValue();
 }
}
์ƒ์„ฑ์ž๋Š” GenConstructorclass ์—์„œ ํŒŒ์ƒ ํด๋ž˜์Šค์—ฌ์•ผ ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์œ ํ˜• ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Number๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION