C์ธ์ด
๋ฐฐ์ด์ ๋ํด์ ์์๋ณด์.
- int a[10]; โ 8byte ์ง๋ฆฌ a๋ ํผ๋ฐ์ค ๋ณ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๊ณผ 40byte ์ ์ ๋ฐฐ์ด ๊ณต๊ฐ.
- a ๋ a[0] ์ ์ฒซ ๋ฒ์งธ byte ๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
- a ๋ 8byte ์ง๋ฆฌ โํฌ์ธํฐ ๋ณ์โ ์ด๋ค.
arr[0]
์ *arr
๋ ๊ฐ๋ค.
arr[9999]
์ *(arr + 9999)
๋ ๊ฐ๋ค.

๐ก ๋ฐฐ์ด์ ํต์ฌ : 2๊ฐ๋ง ์๋ฉด **๋ชจ๋ ๊ณณ**์ ์ฐพ์ ๋ค์ด๊ฐ ์ ์๋ค.
๋ช ์นธ์ธ์ง, a[0] ์ ์ฒซ ๋ฒ์งธ byte
๋ฐฐ์ด ์ ์ฌ์ฉํ๋๊ฐ ?
- ๋ณ์ 1๊ฐ๋ก ๊ณต๊ฐ ์ฌ๋ฌ ๊ณณ์ ๋ค๋ฃฐ ์ ์๋ค.
- ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋์ ์ ์๋ค.
- ๋ฐฐ์ด ์์์ ๋ํ ์ ๊ทผ์ด ๋งค์ฐ ๋น ๋ฅด๋ค.
์๋ฐ
ํด๋์ค์ ๊ฐ์ฒด
class Main {
public static void main(String[] args) {
์๋์ฐจ a์๋์ฐจ;
a์๋์ฐจ = new ์๋์ฐจ();
a์๋์ฐจ.๋ฌ๋ฆฌ๋ค();
}
}
class ์๋์ฐจ {
void ๋ฌ๋ฆฌ๋ค() {
System.out.println("์๋์ฐจ๊ฐ ๋ฌ๋ฆฝ๋๋ค.");
}
}
- ๊ฐ์ฒด๊ฐ ์๋ก ์๊ฒฉ ์กฐ์ข
ํ๋ค ?

โ ์ ์ฌ๊ฐ์ฒด ์์๋ ๋ฌด๊ธฐ๊ฐ ๋ค์ด๊ฐ๋๊ฒ ์๋๋ผ, ๋ฌด๊ธฐ๋ฆฌ๋ชจ์ฝ์ด ๋ค์ด๊ฐ๋ค.
โ ์ ์ฌ๊ฐ ๋ฌด๊ธฐ๋ฅผ ์๊ฒฉ ์กฐ์ข
ํ๊ณ ์๋ ์ํ.
- ๋ชจ๋ ๊ฐ์ฒด๋ค์ ์๋ก๋ฅผ ํ์ ๋ณผ ์ ์๋ค.
- ์ ์ฌ๊ฐ ์ธ๋ถ ๊ฐ์ฒด์ ์์ฒญํ ๋, โ๋ฆฌ๋ชจ์ฝโ์ผ๋ก ์๊ฒฉ ์กฐ์ ํ๋ค.
์์
- ์์์
IS
๊ด๊ณ์ด๋ค.
- ์ฒญ๋ฅ์ค๋ฆฌ๋ ์ค๋ฆฌ์ด๋ค.
- ์ฌ๋์ ๋๋ฌผ์ด๋ค.
- ์์์ผ๋ก ๋ฉ์๋์ ์ค๋ณต ์ฌํญ ์ ๊ฑฐ ๊ฐ๋ฅ.
- ์๋ฐ์์๋
is
๋ฅผ extends
๋ผ๊ณ ์ฌ์ฉํ๋ค.
์ฆ, ์ฌ๋ extends ๋๋ฌผ
- ์ฌ๋์ ์์ class, ๋๋ฌผ์ ๋ถ๋ชจ class. ๋ถ๋ชจ class์ ๋ชจ๋ ๊ฒ์ ๋ฌผ๋ ค๋ฐ๋๋ค.
โ ์ ํํ๋ **๋ณต์ฌ**
๋ผ์ ๋ค์ด๊ฐ)
๋์์ธ ํจํด
- ์์, ๊ตฌ์ฑ์ ํ์์ฑ
- ์ํํธ์จ์ด์์ ๋ณํํ๋ ๊ฒ์ ๋ณํํ์ง ์๋ ๊ฒ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌํ๋ผ.
- ์ ๋ต ํจํด(Startegy Pattern)
์ค๋ฆฌ ์๋ฎฌ๋ ์ด์
์ ํตํด ์์
, ๋ฉ์๋์ค๋ฒ๋ผ์ด๋ฉ
์ดํดํ๊ธฐ.
ctrl + 1
โ class, method ์๋ ์์ฑ
- ๊ฐ์ฒด์งํฅ ํจํด โ
์ค๋ณต์ ์ผ๋ง๋ ๊น๋ํ๊ฒ ์ ๊ฑฐํ๋๋
. ๊ฐ ๊ด๊ฑด์ด๋ค.
- ์์ค์ฝ๋ ์ค๋ณต์ด๋?
- ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋๋?
- ๊ธฐ์กด ๋ฉ์๋๊ฐ ๋ณ๋ก์ฌ์, ์๋ก ๋ง๋๋ ํ์. (๊ณ ๋ฌด์ค๋ฆฌ ์
๋ ๋ค()
์ฌ์ ์)
โ ๊ธฐ์กด ๋ ๋ค()
๋ฉ์๋๋ super.๋ ๋ค();
๋ผ๋ ๊ฒ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ๋ค!
- ์์์ผ๋ก๋ ๋ชจ๋ ์์๋ค์ ๋ง์กฑ์ํฌ ์ ์๋ค.
static
โ class ์ธ์คํด์ค ์์ฑํ์ง ์๊ณ ํด๋์ค ๋ณ์๋ก ๋ฐ๋ก ์ ๊ทผ ๊ฐ๋ฅ.
- ๋ค์ค์์์ ๋งํ ์๋ค !!!
- class ๋ก๋ด์ค๋ฆฌ extends ์ค๋ฆฌ, ๊ณ ๋ฌด์ค๋ฆฌ { } โ (x)
new ๋ก๋ด์ค๋ฆฌ().๋ ๋ค();
๋ฅผ ํ ๋, ๋ฌด์์ ๊ฐ์ ธ์์ผ ํ ์ง ๋ชจ๋ฅธ๋ค.
์ฆ, ์ค๋ฆฌ์์ ๊ฐ์ ธ์ฌ์ง, ๊ณ ๋ฌด์ค๋ฆฌ์์ ๊ฐ์ ธ์ฌ์ง ์ ๋งคํ๋ค.
- ์์์ผ๋ก๋ ๋ณต์กํ ๊ด๊ณ๋ฅผ ๋ง์กฑ์ํฌ ์ ์๋ค. (์์ ์ฌ์ฉ์ ์ง์ํ๋ ์ด์ )
- class
๋ก๋ด์ค๋ฆฌ
์์ ์ค๋ฆฌ
์ ๋ ๋ค(); ์ ๊ณ ๋ฌด์ค๋ฆฌ
์ ํค์์น๋ค(); ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์๋ฐ, ๋ค์ค์์์ ๋งํ ์๋ค. ๊ทธ๋์, ์ค๋ฆฌ๋ง ์์๋ฐ๊ณ ํค์์น๋ค(); ๋ ๊ทธ๋ฅ ์ค๋ฒ๋ผ์ด๋ฉ ํด๋ดค์ง๋ง,
โ ์ญ์ ๊ณ ๋ฌด์ค๋ฆฌ ํค์์น๋ค(); ์ ์ค๋ณต์ด ๋ฐ์ํ๋ค. ์ด๊ฑด ์ด์ฉ ์ ์๋ค.
์นผ a์นผ;
// a์นผ ๋ณ์์๋ ์ค์ง ์นผ ๋ฆฌ๋ชจ์ฝ๋ง
๋ค์ด๊ฐ ์ ์๋ค.
// a์นผ ๋ณ์๋ ์ค์ง ์นผ ๊ฐ์ฒด๋๋ง ์ฐ๊ฒฐ๋ ์ ์๋ค.
class Main {
public static void main(String[] args) {
๋ฌด๊ธฐ a๋ฌด๊ธฐ = new ์นผ();
a๋ฌด๊ธฐ.๊ณต๊ฒฉ();
}
}
class ๋ฌด๊ธฐ { }
class ์นผ extends ๋ฌด๊ธฐ {
void ๊ณต๊ฒฉ() { }
}
์ ๋ฆฌ
- ํด๋์ค๋ก ํ ์ ์๋ 3๊ฐ์ง
- ๋ณ์ ์์ฑ : ์ฌ๋ a์ฌ๋;
๊ฐ์ฒด ์์ฑ : new ์ฌ๋();
๋ฆฌ๋ชจ์ฝ ์์ฑ : new ์ฌ๋();
- ๋ฉ์๋๊ฐ ์ฐ์ด๋ 2๊ฐ์ง ์ํฉ
- ๊ฐ์ฒด์์๋ ๊ธฐ๋ฅ
๋ฆฌ๋ชจ์ฝ์์๋ ๋ฒํผ
- ์ฌ๋ a์ฌ๋;
- a์ฌ๋ ์ด๋ผ๋ ๋ณ์์๋ ์ค์ง! ์ฌ๋ ๋ฆฌ๋ชจ์ฝ๋ง ๋ค์ด ์ฌ ์ ์๋ค.
- a์ฌ๋ ์ด๋ผ๋ ๋ณ์๋ ์ค์ง ์ฌ๋ ๊ฐ์ฒด์ ์ฐ๊ฒฐ๋ ์ ์๋ค.
- ์์์ผ๋ก๋ ๋จ์ํ ์ค๋ณต์ ํด๊ฒฐํ ์ ์์ง๋ง, ๋ณต์กํ ์ค๋ณต์ ํด๊ฒฐํ ์ ์๋ค.
=> ๊ตฌ์ฑ
์ ๋ฐฐ์์ผ ํ๋ค.
- ๋ค์ค์์์ ๋ถ๊ฐ๋ฅํ๋ค.
- ์ํํธ์จ์ด์ ๊ฐ์ฒด์งํฅ ๊ธฐ๋ฒ, ์ข์ ์ค๊ณ๊ธฐ๋ฒ, ๋์์ธ ํจํด ๋ฑ์ ์ค์ง
์ค๋ณต์์ค์ฝ๋
๋ฅผ ํฉ๋ฆฌ์ ์ผ๋ก ์์ ๊ธฐ ์ํด์ ์กด์ฌํ๋ค.
- ์ค๋ณต์ด ์ ์ข์ ์ด์ .
- ๋์ค์ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธธ ๋, ๋ฐ๊ฟ์ผ ํ๋๊ฒ ๋ง์์ง๋ค.
โ ๋ง์ฝ ํ๋๋ก ๊ด๋ฆฌํ๋ฉด, ๊ทธ ๋ถ๋ถ๋ง ์์ ํ๋ฉด ๋.
- ์ด ์ค๋ณต์ ํด๊ฒฐํ๊ธฐ ์ํด
๊ฐ์ฒด์งํฅ ๊ธฐ๋ฒ
์ ๋์
ํ๋ค.