1. ์ธํฐํ์ด์ค ์๊ฐ
์ค๋์ ์ง์์ ๋ ์ ๋๋ค. ๋ ๋ค๋ฅธ ์๋กญ๊ณ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ๋ ์ธํฐํ์ด์ค์ ๋๋ค.
์ธํฐํ์ด์ค ์ ๊ฐ๋
์ ์ถ์ํ ๋ฐ ๋คํ์ฑ ์์น์ ์์์
๋๋ค. ์ธํฐํ์ด์ค๋ ๋ชจ๋ ๋ฉ์๋๊ฐ ์ถ์์ธ ์ถ์ ํด๋์ค์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ํด๋์ค์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ์ธ๋์ง๋ง ํค์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค interface
.
interface Feline
{
void purr();
void meow();
void growl();
}
๋ค์์ ์ธํฐํ์ด์ค์ ๋ํ ๋ช ๊ฐ์ง ์ ์ฉํ ์ฌ์ค์ ๋๋ค.
1. ์ธํฐํ์ด์ค ์ ์ธ
interface Drawable
{
void draw();
}
interface HasValue
{
int getValue();
}
class
ํค์๋ ๋์interface
.- ์ถ์ ๋ฉ์๋๋ง ํฌํจํฉ๋๋ค(ํค์๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค
abstract
). - ์ค์ ๋ก ์ธํฐํ์ด์ค์๋ ๋ชจ๋
public
๋ฉ์๋๊ฐ ์์ต๋๋ค.
์ธํฐํ์ด์ค๋ ์ธํฐํ์ด์ค๋ง ์์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ธํฐํ์ด์ค๋ ๋ง์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋งํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ Java๊ฐ ์ธํฐํ์ด์ค์ ๋ค์ค ์์์ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋งํ๋ ๊ฒ์ ๋๋ค. ์:
interface Piece extends Drawable, HasValue
{
int getX();
int getY();
}
3. ์ธํฐํ์ด์ค์์ ํด๋์ค ์์
ํด๋์ค๋ ์ฌ๋ฌ ์ธํฐํ์ด์ค๋ฅผ ์์ํ ์ ์์ต๋๋ค(ํ๋์ ํด๋์ค์์๋ง). ์ด๊ฒ์ implements
ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. ์:
abstract class ChessItem implements Drawable, HasValue
{
private int x, y, value;
public int getValue()
{
return value;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
}
ChessItem ํด๋์ค๋ ์ถ์์ผ๋ก ์ ์ธ๋ฉ๋๋ค. ๋ฅผ ์ ์ธํ ๋ชจ๋ ์์๋ ๋ฉ์๋๋ฅผ ๊ตฌํํฉ๋๋ค draw
. ์ฆ, ChessItem
ํด๋์ค์๋ ํ๋์ ์ถ์ ๋ฉ์๋์ธ draw()
.
extends
๋ฐ ํค์๋ ์ ๊ธฐ์ ์ ์๋ฏธ๋ implements
๋์ผํฉ๋๋ค. ๋ ๋ค ์์์
๋๋ค. ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํด ๊ตฌ๋ถํ์ต๋๋ค. extends
์ฐ๋ฆฌ๋ ๋ํ ํด๋์ค๊ฐ ์์๋๊ณ ( ํตํด ) ์ธํฐํ์ด์ค๊ฐ ๊ตฌํ๋๋ค๊ณ ๋งํฉ๋๋ค ( ํตํด implements
).
4. ๋ณ์
์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ด ์์ต๋๋ค. ์ผ๋ฐ ๋ณ์๋ ์ธํฐํ์ด์ค์์ ์ ์ธํ ์ ์์ต๋๋ค (์ ์ ๋ณ์๋ ๊ฐ๋ฅํ์ง๋ง).
ํ์ง๋ง ์ธํฐํ์ด์ค๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ทธ๋ค์ ์ธ์ ์ฌ์ฉ๋ฉ๋๊น? ์ธํฐํ์ด์ค๋ ํด๋์ค์ ๋นํด ๋ ๊ฐ์ง ๊ฐ๋ ฅํ ์ด์ ์ด ์์ต๋๋ค.
2. ๊ตฌํ์์ "๋ฉ์๋ ์ค๋ช "์ ๋ถ๋ฆฌํฉ๋๋ค.
์ด์ ์ ํด๋์ค์ ๋ฉ์๋๊ฐ ๋ค๋ฅธ ํด๋์ค์์ ํธ์ถ๋๋๋ก ํ์ฉํ๋ ค๋ฉด ๋ฉ์๋์ ํค์๋๋ฅผ ํ์ํด์ผ ํ๋ค๊ณ public
๋งํ์ต๋๋ค . ์ด๋ฌํ ๋ฉ์๋ ์ค ์ผ๋ถ๋ฅผ ํด๋์ค ๋ด์์๋ง ํธ์ถํ๋ ค๋ฉด ํค์๋๋ก ํ์ํด์ผ ํฉ๋๋ค private
. ์ฆ, ์ฐ๋ฆฌ๋ ํด๋์ค์ ๋ฉ์๋๋ฅผ "๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋"๊ณผ "์ฐ๋ฆฌ ์์ ๋ง ์ฌ์ฉํ ์ ์๋" ๋ ๊ฐ์ง ๋ฒ์ฃผ๋ก ๋๋๋๋ค.
์ธํฐํ์ด์ค๋ ์ด ๊ตฌ๋ถ์ ๋์ฑ ๊ฐํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ํน๋ณํ "๋ชจ๋๊ฐ ์ฌ์ฉํ ์ ์๋ ํด๋์ค"์ ์ฒซ ๋ฒ์งธ ํด๋์ค๋ฅผ ์์ํ "์ฐ๋ฆฌ ์์ ๋ง ์ฌ์ฉํ ์ ์๋" ๋ ๋ฒ์งธ ํด๋์ค๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค. ๋๋ต์ ์ธ ๋ชจ์ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ | ํ์ |
---|---|
|
|
|
|
ํด๋์ค๋ฅผ ์ธํฐํ์ด์ค ์ ์ธํฐํ์ด์ค ๋ฅผ ์์ํ๋ ํด๋์ค ์ ๋ ๊ฐ์ง๋ก ๋๋๋๋ค . ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ฅ์ ์ ๋ฌด์์ ๋๊น?
๋ง์ ๋ค๋ฅธ ํด๋์ค๊ฐ ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ(์์)ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๊ณ ์ ํ ๋์์ ๊ฐ์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ธํฐํ์ด์ค ArrayList
LinkedList
์ ๋ ๊ฐ์ง ๋ค๋ฅธ ๊ตฌํ์ด ์์ต๋๋ค List
.
๋ฐ๋ผ์ ๋ค์ํ ๊ตฌํ๋ฟ๋ง ์๋๋ผ ๊ตฌํ ํด๋์ค ์์ฒด๋ ์จ๊น๋๋ค(์ฝ๋์์ ์ธํฐํ์ด์ค๋ง ํ์ํ๋ฏ๋ก). ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ๋งค์ฐ ์ ์ฐํด์ง ์ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์ฆ์ ํ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๊ต์ฒดํ์ฌ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ํด๋์ค์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๊ฐ์ฒด์ ๋์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๋คํ์ฑ๊ณผ ๊ฒฐํฉ๋ ๋ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ์ ์ ๋๋ค. ์ง๊ธ์ ์ ์ด๋ ๊ฒ ํด์ผ ํ๋์ง ๋ช ํํ์ง ์์ต๋๋ค. ์ธํฐํ์ด์ค๊ฐ ์๋ ๊ฒ๋ณด๋ค ์ถ์ ํจ์ฌ ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ์ดํดํ๋ ค๋ฉด ๋จผ์ ์์ญ ๋๋ ์๋ฐฑ ๊ฐ์ ํด๋์ค๊ฐ ์๋ ํ๋ก๊ทธ๋จ์ ์ ํด์ผ ํฉ๋๋ค.
3. ๋ค์ค ์์
Java์์ ๋ชจ๋ ํด๋์ค๋ ํ๋์ ์์ ํด๋์ค๋ง ๊ฐ์ง ์ ์์ต๋๋ค. ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ํด๋์ค๋ ์ข ์ข ์ฌ๋ฌ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ํธ๋ฆฌํ์ง๋ง ๋ง์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๊ธฐ๋ ํฉ๋๋ค.
Java ์ ์์๋ ํํ์ ๋๋ฌํ์ต๋๋ค. ํด๋์ค์ ๋ค์ค ์์์ ๊ธ์งํ์ง๋ง ์ธํฐํ์ด์ค์ ๋ค์ค ์์์ ํ์ฉํ์ต๋๋ค. ์ธํฐํ์ด์ค๋ ์ฌ๋ฌ ์์ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ํด๋์ค๋ ์ฌ๋ฌ ๋ถ๋ชจ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง ์ ์์ง๋ง ๋ถ๋ชจ ํด๋์ค๋ ํ๋๋ง ๊ฐ์ง ์ ์์ต๋๋ค.
ํด๋์ค์ ๋ค์ค ์์์ ๊ธ์งํ๊ณ ์ธํฐํ์ด์ค์ ๋ค์ค ์์์ ํ์ฉํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์์ ๋ค์ด์๋ชฌ๋ ์์ ๋ฌธ์ ๋ก ์ธํด:

B ํด๋์ค๊ฐ A ํด๋์ค๋ฅผ ๋ฌผ๋ ค๋ฐ์ ๋ C ํด๋์ค์ D ํด๋์ค์ ๋ํด ์๋ฌด๊ฒ๋ ๋ชจ๋ฆ ๋๋ค. ๋ฐ๋ผ์ ์ ํฉํ๋ค๊ณ ํ๋จ๋๋ A ํด๋์ค์ ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. C ํด๋์ค๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. A ํด๋์ค์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ฐฉ์์ด ๋ค๋ฆ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฒ์ด D๊ณ๊ธ์์ ๊ฐ๋ฑ์ ๋ณ๋๋ค.
๋ค์์ ๊ฐ๋จํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. 3๊ฐ์ ํด๋์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
class Data
{
protected int value;
}
class XCoordinate extends Data
{
public void setX (int x) { value = x;}
public int getX () { return value;}
}
class YCoordinate extends Data
{
public void setY (int y) { value = y;}
public int getY () { return value; }
}
๋ฐ์ดํฐ ํด๋์ค๋ value
๋ณ์๋ฅผ ์ ์ฅํฉ๋๋ค. XCoordinate ์์ ํด๋์ค๋ ํด๋น ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ฅ x
ํ๊ณ YCoordinate
์์ ํด๋์ค๋ ์ด๋ฅผ ์ฌ์ฉํ์ฌ y
๊ฐ์ ์ ์ฅํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์๋ํฉ๋๋ค. ๊ฐ๋ผ์ ธ. ๊ทธ๋ฌ๋ XYCoordinates ํด๋์ค๊ฐ XCoordinate
๋ฐ YCoordinate
ํด๋์ค๋ฅผ ๋ชจ๋ ์์ํ๊ฒ ํ๋ ค๋ฉด ์ฝ๋๊ฐ ์์๋ฉ๋๋ค. ์ด ํด๋์ค๋ ์กฐ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ๊ฐ์ง์ง๋ง ๋์ผํ value variable
.
๊ทธ๋ฌ๋ ์ธํฐํ์ด์ค๋ ๋ณ์๋ฅผ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ข ๋ฅ์ ์ถฉ๋์ด ์์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ธํฐํ์ด์ค์ ๋ค์ค ์์์ด ํ์ฉ๋ฉ๋๋ค.
GO TO FULL VERSION