์์ฑ์์ ๋ํ ์ผ๋ฐ ์ ๋ณด
ะะพะฝััััะบัะพั
ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ชฉ์ ์ธ ๋ฉ์๋์ ์ ์ฌํ ๊ตฌ์กฐ์
๋๋ค. ๋์์ด๋์ ํน์ฑ:
- ์์ฑ์์ ์ด๋ฆ์ ํด๋์ค์ ์ด๋ฆ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค(๊ด๋ก์ ์ผ๋ก ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ํ์๋๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ช
์ฌ์
๋๋ค).
- ๋ชจ๋ ํด๋์ค์๋ ์์ฑ์๊ฐ ์์ต๋๋ค. ์์ฑํ์ง ์๋๋ผ๋ Java ์ปดํ์ผ๋ฌ๋ ๋น์ด ์๊ณ ์ํผํด๋์ค ์์ฑ์๋ฅผ ํธ์ถํ๋ ๊ฒ ์ธ์๋ ์๋ฌด๊ฒ๋ ์ํํ์ง ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์์ฑํฉ๋๋ค.
- ์์ฑ์๋ ๋ฉ์๋์ ์ ์ฌํ์ง๋ง ๋ฉ์๋๊ฐ ์๋๋ฉฐ ํด๋์ค์ ๋ฉค๋ฒ๋ก ๊ฐ์ฃผ๋์ง๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ ํด๋์ค์์ ์์๋๊ฑฐ๋ ์ฌ์ ์๋ ์ ์์ต๋๋ค.
- ์์ฑ์๋ ์์๋์ง ์์ต๋๋ค.
- ํด๋์ค์๋ ์ฌ๋ฌ ์์ฑ์๊ฐ ์์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์์ฑ์๊ฐ ์ค๋ฒ๋ก๋๋์๋ค๊ณ ํฉ๋๋ค.
- ํด๋์ค๊ฐ ์์ฑ์๋ฅผ ์ ์ํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๋ ์๋์ผ๋ก ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ์์ฑ์๋ฅผ ์ฝ๋์ ์ถ๊ฐํฉ๋๋ค.
- ์์ฑ์๋ ๋ฐํ ์ ํ์ด ์์ผ๋ฉฐ ์ ํ์ผ ์๋ ์์ต๋๋ค
void
. ์ ํ์ด ๋ฐํ๋๋ฉด void
ํด๋์ค ์ด๋ฆ๊ณผ ์ผ์นํ๋๋ผ๋ ๋ ์ด์ ์์ฑ์๊ฐ ์๋๋ผ ๋ฉ์๋์
๋๋ค.
- ์ฐ์ฐ์๋ ์์ฑ์์์ ํ์ฉ๋์ง๋ง
return
๋ฐํ ๊ฐ ์์ด ๋น์ด๋ง ์์ต๋๋ค.
- ์์ฑ์ ๋ ์ก์ธ์ค ์์ ์์ ์ฌ์ฉ์ ํ์ฉํฉ๋๋ค. ์์ ์ ์์ด , ๋๋ ์์ ์ ์ค ํ๋๋ฅผ ์ค์ ํ ์
public
์์ต๋๋ค .protected
private
- ์์ฑ์๋ ์์ ์
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)");
}
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 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");
}
private void VoidDemo2()
{
System.out.println("Method");
}
public static void main(String s[])
{
VoidDemo2 m = new VoidDemo2();
}
}
์์ฑ์์ ์ฐ์ฐ์๋ฅผ ์์ฑํ ์
return
์์ง๋ง ๋ฐํ ๊ฐ ์์ด ๋น ์ฐ์ฐ์๋ง ์์ฑํ ์ ์์ต๋๋ค. ํ์ผ
ReturnDemo.java
class ReturnDemo
{
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
ํด์ ์ด์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
์์ฑ์์ ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
์์ฑ์๋ ๊ธฐ๋ณธ ์ ํ์ ์ ๋ฌ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ฑ์๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์ ํ๋ก๊ทธ๋จ์ ๊ณ ๋ คํด ๋ณด์ญ์์ค: File
Salary1.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
. ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ ๊ฐ์ง ์ผ์ด ๋ฐ์ํฉ๋๋ค.
- ๋ณ์๋ ๋งค๊ฐ๋ณ์ ๊ฐ (์: ์ซ์ )
x
์ ๋ณต์ฌ๋ณธ์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค .value
1000
- ๋ณ์์ ๊ฐ์
x
3๋ฐฐ๊ฐ ๋์ด ์ด์ ์ ๊ฐ์ต๋๋ค 3000
. ๊ทธ๋ฌ๋ ๋ณ์์ ๊ฐ์ value
์ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค 1000
.
- ์์ฑ์๊ฐ ์ข
๋ฃ๋๊ณ ๋ณ์๋
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
ํ์ฅ๋ฉ๋๋ค . ๋ฐ๋ ์ต์
์ธ ๋ณ์๊ฐ ์ ํ ์ด๊ณ ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ง ์๋ ๊ฒฝ์ฐ ์ด ์ํฉ์์๋ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
int
double
i
double
int
์์ฑ์ ํธ์ถ ๋ฐ ์ฐ์ฐ์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.value
1000
Salary3 s2 = new Salary3(s1)
s2
s1
Salary3 s3 = new Salary3(s1)
s3
s1
์์ฑ์ ๋ฐ ์ด๊ธฐํ ๋ธ๋ก, ์์ฑ์ ํธ์ถ ์ ์์
์์
๊ฐ์ฒด ์์ฑ ๋ฐ ์์ฑ์ ์น์
์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ํ๋๋ ์ผ๋ฐ์ ์ธ ์์
์ด ๋์ด๋์ด ์์ต๋๋ค. ๊ทธ ์ค์๋ ํด๋์ค ํ๋๋ฅผ ์ด๊ธฐํํ๊ณ ํด๋์ค ์์ฑ์๋ฅผ ์์
ํ๋ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ฉฐ, ์ด ํ๋ก์ธ์ค์๋ ๋ด๋ถ ์์๊ฐ ์์ต๋๋ค.
- ๋ชจ๋ ๋ฐ์ดํฐ ํ๋๋ ๊ธฐ๋ณธ๊ฐ(0, false ๋๋ null)์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
- ๋ชจ๋ ํ๋ ์ด๊ธฐํ ํ๋ก๊ทธ๋จ๊ณผ ์ด๊ธฐํ ๋ธ๋ก์ ํด๋์ค ์ ์ธ์ ๋์ด๋ ์์๋๋ก ์คํ๋ฉ๋๋ค.
- ์์ฑ์์ ์ฒซ ๋ฒ์งธ ์ค์์ ๋ค๋ฅธ ์์ฑ์๊ฐ ํธ์ถ๋๋ฉด ํธ์ถ๋ ์์ฑ์๊ฐ ์คํ๋ฉ๋๋ค.
- ์์ฑ์์ ๋ณธ๋ฌธ์ด ์คํ๋ฉ๋๋ค.
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()
SuperClassDemo
Child
super
super()
Call.java
class A
{
A()
{
System.out.println("Inside A constructor.");
}
}
class B extends A
{
B()
{
System.out.println("Inside B constructor.");
}
}
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();
}
}
์์ฑ์๋
GenConstructor
class ์์ ํ์ ํด๋์ค์ฌ์ผ ํ๋ ์ฌ์ฉ์ ์ ์ ์ ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ๊ธฐ ๋๋ฌธ์
Number
๋ชจ๋ ํด๋์ค์์ ํธ์ถํ ์ ์์ต๋๋ค.
GO TO FULL VERSION