์๋ฐ์ ์ ์ 6์ฅ: ๊ฐ์ฒด์งํฅ ๊ฐ๋ 1
[ ์ถ์ฒ ]
์๋ฐ์ ์ ์:
https://product.kyobobook.co.kr/detail/S000001550352
์๋ฐ์ ์ ์ ์ ํ๋ธ:
https://www.youtube.com/playlist?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
1. ๊ฐ์ฒด์งํฅ ์ธ์ด
<๊ฐ์ฒด์งํฅ ์ธ์ด์ ์ฃผ์ ํน์ง>
1) ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค.
2) ์ฝ๋์ ๊ด๋ฆฌ(์ ์ง๋ณด์)๊ฐ ์ฉ์ดํ๋ค.
3) ์ ๋ขฐ์ฑ์ด ๋์ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
โ ์ฌ์ฌ์ฉ์ฑ, ์ ์ง๋ณด์, ์ค๋ณต๋ ์ฝ๋์ ์ ๊ฑฐ
2. ํด๋์ค์ ๊ฐ์ฒด
ํด๋์ค์ ์ ์ : ๊ฐ์ฒด๋ฅผ ์ ์ํด ๋์ ๊ฒ, ๊ฐ์ฒด์ ์ค๊ณ๋
ํด๋์ค์ ์ฉ๋ : ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ
๊ฐ์ฒด์ ์ ์ : ์ค์ ๋ก ์กด์ฌํ๋ ๊ฒ. ์ฌ๋ฌผ ๋๋ ๊ฐ๋
์ ํ์ ๊ฐ์ฒด : ์ฑ ์, ์์, ์๋์ฐจ, TV์ ๊ฐ์ ์ฌ๋ฌผ
๋ฌดํ์ ๊ฐ์ฒด : ์ํ๊ณต์, ํ๋ก๊ทธ๋จ ์๋ฌ์ ๊ฐ์ ๋ ผ๋ฆฌ๋ ๊ฐ๋
<ํด๋์ค์ ๊ฐ์ฒด์ ๊ด๊ณ>
ํด๋์ค์ ๊ฐ์ฒด๋ ์ ํ ์ค๊ณ๋์ ์ ํ๊ณผ์ ๊ด๊ณ๋ผ๊ณ ๋น์ ํ ์ ์๋ค.
ํด๋์ค | ๊ฐ์ฒด |
---|---|
์ ํ ์ค๊ณ๋ | ์ ํ |
๋ถ์ด๋นต ๊ธฐ๊ณ | ๋ถ์ด๋นต |
TV ์ค๊ณ๋ | TV |
TV์ค๊ณ๋๋ TV๋ผ๋ ์ ํ์ ์ ์ํ ๊ฒ์ด๋ฉฐ TV๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ TV๋ฅผ ๋ณด๊ธฐ ์ํด์๋, TV(๊ฐ์ฒด)๊ฐ ํ์ํ ๊ฒ์ด์ง TV์ค๊ณ๋(ํด๋์ค)๊ฐ ํ์ํ ๊ฒ์ ์๋๋ค.
TV์ค๊ณ๋๋ ๋จ์ง TV๋ผ๋ ์ ํ(๊ฐ์ฒด)์ ๋ง๋๋ ๋ฐ๋ง ์ฌ์ฉ๋ ๋ฟ์ด๋ค.
๊ทธ๋ฆฌ๊ณ TV์ค๊ณ๋๋ฅผ ํตํด TV๊ฐ ๋ง๋ค์ด์ง ํ์์ผ ์ฌ์ฉํ ์ ์๋ค.
3. ๊ฐ์ฒด์ ๊ตฌ์ฑ์์ - ์์ฑ๊ณผ ๊ธฐ๋ฅ
๊ฐ์ฒด๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ์งํฉ์ด๋ค. ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ๊ทธ ๊ฐ์ฒด์ ๋ฉค๋ฒ(๊ตฌ์ฑ์, member)๋ผ ํ๋ค.
์์ฑ | ํฌ๊ธฐ, ๊ธธ์ด, ๋์ด, ์์, ๋ณผ๋ฅจ, ์ฑ๋ ๋ฑ | โ ๋ณ์ |
---|---|---|
๊ธฐ๋ฅ | ์ผ๊ธฐ, ๋๊ธฐ, ๋ณผ๋ฅจ ๋์ด๊ธฐ, ๋ณผ๋ฅจ ๋ฎ์ถ๊ธฐ, ์ฑ๋ ๋ณ๊ฒฝํ๊ธฐ ๋ฑ | โ ๋ฉ์๋ |
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ๊ฐ๊ฐ ๋ณ์์ ๋ฉ์๋๋ก ํํํ๋ค.
class Tv {
// [์์ฑ] -> [๋ณ์]
String color; // ์๊น
boolean power; // ์ ์์ํ
int channel; // ์ฑ๋
// [๊ธฐ๋ฅ] -> [๋ฉ์๋]
void power() {
power = !power;
}
void channelUp() {
channel++;
}
void channelDown() {
channel--;
}
}
4. ๊ฐ์ฒด์ ์ธ์คํด์ค
์ธ์คํด์คํ(instantiate) : ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ณผ์
์ธ์คํด์ค(instance) : ์ด๋ค ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด
Tvํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ฅผ Tvํด๋์ค์ ์ธ์คํด์ค๋ผ๊ณ ํ๋ค. ๊ฒฐ๊ตญ ์ธ์คํด์ค์ ๊ฐ์ฒด๋ ๊ฐ์ ์๋ฏธ์ง๋ง,
๊ฐ์ฒด๋ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ๋ํํ๋ ํฌ๊ด์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ, ์ธ์คํด์ค๋ ์ด๋ค ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฒ์ธ์ง๋ฅผ ๋ณด๋ค ๊ฐ์กฐํ๋ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์๋ค.
์๋ฅผ ๋ค๋ฉด โ์ฑ ์์ ์ธ์คํด์ค๋ค.โ๋ผ๊ณ ํ๊ธฐ ๋ณด๋ค๋ โ์ฑ ์์ ๊ฐ์ฒด๋คโ๋ผ๋ ์ชฝ์ด,
โ์ฑ ์์ ์ฑ ์ ํด๋์ค์ ๊ฐ์ฒด์ด๋คโ๋ผ๊ณ ํ๊ธฐ ๋ณด๋ค๋ โ์ฑ ์์ ์ฑ ์ ํด๋์ค์ ์ธ์คํด์ค๋คโ๋ผ๊ณ ํ๋ ๊ฒ์ด ๋ ์์ฐ์ค๋ฝ๋ค.

5. ํ ํ์ผ์ ์ฌ๋ฌ ํด๋์ค ์์ฑํ๊ธฐ
ํ๋์ ์์คํ์ผ์ ํ๋์ ํด๋์ค๋ง์ ์ ์ํ๋ ๊ฒ์ด ๋ณดํต์ด์ง๋ง, ํ๋์ ์์คํ์ผ์ ๋ ์ด์์ ํด๋์ค๋ฅผ ์ ์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
<์ฃผ์ํด์ผํ ์ >
์์คํ์ผ์ ์ด๋ฆ์ public class์ ์ด๋ฆ๊ณผ ์ผ์นํด์ผ ํ๋ค. ๋ง์ผ ์์คํ์ผ ๋ด์ public class๊ฐ ์๋ค๋ฉด, ์์คํ์ผ์ ์ด๋ฆ์ ์์คํ์ผ ๋ด์ ์ด๋ค ํด๋์ค์ ์ด๋ฆ์ผ๋ก ํด๋ ์๊ด์๋ค.
์์คํ์ผ(*.java)๊ณผ ๋ฌ๋ฆฌ ํด๋์คํ์ผ(*.class)์ ํด๋์ค๋ง๋ค ํ๋์ฉ ๋ง๋ค์ด์ง๋ฏ๋ก ํ๋์ javaํ์ผ์ ๋ ๊ฐ์ ํด๋์ค๊ฐ ์ ์๋์ด ์๋ค๋ฉด ๋ ๊ฐ์ ํด๋์คํ์ผ์ด ์์ฑ๋๋ค.
6. ๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฌ์ฉ
Tvํด๋์ค๋ฅผ ์ ์ธํ ๊ฒ์ Tv์ค๊ณ๋๋ฅผ ์์ฑํ ๊ฒ์ ๋ถ๊ณผํ๋ฏ๋ก, Tv์ธ์คํด์ค๋ฅผ ์์ฑํด์ผ ์ ํ(Tv)์ ์ฌ์ฉํ ์ ์๋ค.
โ ์ธ์คํด์ค๋ ์ฐธ์กฐ๋ณ์๋ฅผ ํตํด์๋ง ๋ค๋ฃฐ ์ ์๋ค.
ํด๋์ค๋ช
๋ณ์๋ช
; // ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ ์ฐธ์กฐ๋ณ์๋ฅผ ์ ์ธ
๋ณ์๋ช
= new ํด๋์ค๋ช
(); // ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑ ํ, ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์ฐธ์กฐ๋ณ์์ ์ ์ฅ
Tv t; // Tvํด๋์ค์ ์ฐธ์กฐ๋ณ์ t๋ฅผ ์ ์ธ
t = new Tv(); // Tv์ธ์คํด์ค๋ฅผ ์์ฑ ํ, ์์ฑ๋ Tv์ธ์คํด์ค์ ์ฃผ์๋ฅผ t์ ์ ์ฅ
t.channel = 7; // Tv์ธ์คํด์ค์ ๋ฉค๋ฒ๋ณ์ channel์ ๊ฐ์ 7๋กํ๋ค.
7. ๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฌ์ฉ ์์
๊ฐ์ ํด๋์ค๋ก๋ถํฐ ์์ฑ๋์์์ง๋ผ๋ ๊ฐ ์ธ์คํด์ค์ ์์ฑ(๋ฉค๋ฒ๋ณ์)์ ์๋ก ๋ค๋ฅธ ๊ฐ์ ์ ์งํ ์ ์์ผ๋ฉฐ, ๋ฉ์๋์ ๋ด์ฉ์ ๋ชจ๋ ์ธ์คํด์ค์ ๋ํด ๋์ผํ๋ค.
8. ๊ฐ์ฒด๋ฐฐ์ด
๊ฐ์ฒด๋ ๋ฐฐ์ด๋ก ๋ค๋ฃจ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฅผ โ๊ฐ์ฒด ๋ฐฐ์ด'์ด๋ผ๊ณ ํ๋ค.
๊ทธ๋ ๋ค๊ณ ๊ฐ์ฒด ๋ฐฐ์ด ์์ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋๋ ๊ฒ์ด ์๋๊ณ , ๊ฐ์ฒด์ ์ฃผ์๊ฐ ์ ์ฅ๋๋ค. ์ฌ์ค ๊ฐ์ฒด ๋ฐฐ์ด์ ์ฐธ์กฐ๋ณ์๋ค์ ํ๋๋ก ๋ฌต์ ์ฐธ์กฐ๋ณ์ ๋ฐฐ์ด์ธ ๊ฒ์ด๋ค.
Tv tv1, tv2, tv3;
โ
Tv[] tvArr = new Tv[3];
๊ธธ์ด๊ฐ 3์ธ ๊ฐ์ฒด ๋ฐฐ์ด tvArr์ ์๋์ ๊ฐ์ด ์์ฑํ๋ฉด, ๊ฐ ์์๋ ์ฐธ์กฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ธ null๋ก ์๋ ์ด๊ธฐํ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ฐ์ฒด ๋ฐฐ์ด์ 3๊ฐ์ ๊ฐ์ฒด, ์ ํํ๋ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์ ์ฅํ ์ ์๋ค.

๊ทธ๋ฆผ์์ ์ ์ ์๋ฏ์ด ๊ฐ์ฒด ๋ฐฐ์ด์ ์์ฑํ๋ ๊ฒ์ ๊ทธ์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ์ฐธ์กฐ๋ณ์๋ค์ด ๋ง๋ค์ด์ง ๊ฒ์ผ ๋ฟ, ์์ง ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์ง ์์๋ค. ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๊ฐ์ฒด ๋ฐฐ์ด์ ๊ฐ ์์์ ์ ์ฅํ๋ ๊ฒ์ ์์ผ๋ฉด ์ ๋๋ค.
Tv tvArr = new Tv[3];
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
----------------------------------------------
Tv[] tvArr = { new Tv(), new Tv(), new Tv() };
9. ํด๋์ค์ ์ ์(1) - ๋ฐ์ดํฐ์ ํจ์์ ๊ฒฐํฉ
<ํ๋ก๊ทธ๋๋ฐ์ ์ธ ๊ด์ ์์ ํด๋์ค์ ์ ์์ ์๋ฏธ>
2. ๋ฐฐ์ด : ๊ฐ์ ์ข ๋ฅ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ์งํฉ์ผ๋ก ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
3. ๊ตฌ์กฐ์ฒด : ์๋ก ๊ด๋ จ๋ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ์ข ๋ฅ์ ๊ด๊ณ์์ด ํ๋์ ์งํฉ์ผ๋ก ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
4. ํด๋์ค : ๋ฐ์ดํฐ์ ํจ์์ ๊ฒฐํฉ(๊ตฌ์กฐ์ฒด + ํจ์)
๊ทธ๋์ ๋ฐ์ดํฐ์ ํจ์๊ฐ ์๋ก ๊ด๊ณ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ๋ผ๋ฆฌ, ํจ์๋ ํจ์๋ผ๋ฆฌ ๋ฐ๋ก ๋ค๋ฃจ์ด์ ธ์์ง๋ง, ์ฌ์ค ํจ์๋ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ ์ ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ๊ฒฝ์ฐ์ ์์ด์ ๋ฐ์ดํฐ์ ํจ์๋ ๊ด๊ณ๊ฐ ๊น๋ค.
๊ทธ๋์ ์๋ฐ์ ๊ฐ์ ๊ฐ์ฒด์งํฅ์ธ์ด์์๋ ๋ณ์(๋ฐ์ดํฐ)์ ํจ์๋ฅผ ํ๋์ ํด๋์ค์ ์ ์ํ์ฌ ์๋ก ๊ด๊ณ๊ฐ ๊น์ ๋ณ์๋ค์ ์ ์ํ๊ณ ํจ์๋ค์ ํจ๊ฒ ๋ค๋ฃฐ ์ ์๊ฒ ํ๋ค.
์๋ก ๊ด๋ จ๋ ๋ณ์๋ค์ ์ ์ํ๊ณ ์ด๋ค์ ๋ํ ์์ ์ ์ํํ๋ ํจ์๋ค์ ํจ๊ป ์ ์ํ ๊ฒ์ด ๋ฐ๋ก ํด๋์ค์ด๋ค. C์ธ์ด์์๋ ๋ฌธ์์ด์ ๋ฌธ์์ ๋ฐฐ์ด๋ก ๋ค๋ฃจ์ง๋ง, ์๋ฐ์์๋ String์ด๋ผ๋ ํด๋์ค๋ก ๋ฌธ์์ด์ ๋ค๋ฃฌ๋ค. ๋ฌธ์์ด์ ๋จ์ํ ๋ฌธ์์ ๋ฐฐ์ด๋ก ์ ์ํ์ง ์๊ณ ํด๋์ค๋ก ์ ์ํ ์ด์ ๋ ๋ฌธ์์ด๊ณผ ๋ฌธ์์ด์ ๋ค๋ฃจ๋๋ฐ ํ์ํ ํจ์๋ค์ ๋ฌถ๊ธฐ ์ํด์์ด๋ค.
10. ํด๋์ค์ ์ ์(2) - ์ฌ์ฉ์ ์ ์ ํ์
์ฌ์ฉ์ ์ ์ ํ์ (user-defined type) : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์๋ฃํ(primitive type)์ธ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ก ๊ด๋ จ๋ ๋ณ์๋ค์ ๋ฌถ์ด์ ํ๋์ ํ์ ์ผ๋ก ์๋ก ์ถ๊ฐํ๋ ๊ฒ
์๋ฐ์ ๊ฐ์ ๊ฐ์ฒด์งํฅ ์ธ์ด์์๋ ํด๋์ค๊ฐ ๊ณง ์ฌ์ฉ์ ์ ์ ํ์ ์ด๋ค. ๊ธฐ๋ณธํ์ ๊ฐ์๋ 8๊ฐ๋ก ์ ํด์ ธ์์ง๋ง ์ฐธ์กฐํ์ ๊ฐ์๊ฐ ์ ํด์ ธ ์์ง ์์ ์ด์ ๋ ์ด์ฒ๋ผ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ก์ด ํ์ ์ ์ถ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
11. ์ ์ธ์์น์ ๋ฐ๋ฅธ ๋ณ์์ ์ข ๋ฅ
๋ณ์์ ์ข ๋ฅ | ์ ์ธ์์น | ์์ฑ์๊ธฐ |
---|---|---|
ํด๋์ค ๋ณ์ (class variable) | ํด๋์ค ์์ญ | ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ๋ |
์ธ์คํด์ค ๋ณ์ (instance variable) | ํด๋์ค ์์ญ | ์ธ์คํด์ค๊ฐ ์์ฑ๋์์ ๋ |
์ง์ญ๋ณ์ (local variable) | ํด๋์ค ์์ญ ์ด์ธ์ ์์ญ (๋ฉ์๋, ์์ฑ์, ์ด๊ธฐํ ๋ธ๋ญ ๋ด๋ถ) | ๋ณ์ ์ ์ธ๋ฌธ์ด ์ํ๋์์ ๋ |
- ์ธ์คํด์ค ๋ณ์(instance variable) - ํด๋์ค ์์ญ์ ์ ์ธ๋๋ฉฐ, ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ๋ง๋ค์ด์ง๋ค. ๊ทธ๋์ ์ธ์คํด์ค ๋ณ์(iv)์ ๊ฐ์ ์ฝ์ด ์ค๊ฑฐ๋ ์ ์ฅํ๋ ค๋ฉด ๋จผ์ ์ธ์คํด์ค๋ฅผ ์์ฑํด์ผํ๋ค. ์ธ์คํด์ค๋ง๋ค ๋ณ๋์ ์ ์ฅ๊ณต๊ฐ์ ๊ฐ์ง๋ฏ๋ก ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ์ธ์คํด์ค๋ง๋ค ๊ณ ์ ํ ์ํ๋ฅผ ์ ์งํด์ผํ๋ ์์ฑ์ ๊ฒฝ์ฐ, ์ธ์คํด์ค ๋ณ์๋ก ์ ์ธํ๋ค.
- ํด๋์ค ๋ณ์(class variable) - ํด๋์ค ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ์ธ์คํด์ค ๋ณ์(iv) ์์ static์ ๋ถ์ด๊ธฐ๋ง ํ๋ฉด ๋๋ค. ์ธ์คํด์ค๋ง๋ค ๋
๋ฆฝ์ ์ธ ์ ์ฅ๊ณต๊ฐ์ ๊ฐ๋ ์ธ์คํด์ค ๋ณ์์๋ ๋ฌ๋ฆฌ ํด๋์ค ๋ณ์๋ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณตํต๋ ์ ์ฅ๊ณต๊ฐ(๋ณ์)์ ๊ณต์ ํ๊ฒ ๋๋ค. ํ ํด๋์ค์ ๋ชจ๋ ์ธ์คํด์ค๋ค์ด ๊ณตํต์ ์ธ ๊ฐ์ ์ ์งํด์ผํ๋ ์์ฑ์ ๊ฒฝ์ฐ, ํด๋์ค ๋ณ์๋ก ์ ์ธํด์ผ ํ๋ค.
+) ํด๋์ค ๋ณ์๋ฅผ ์ฌ์ฉํ ๋๋ Card.width์ ๊ฐ์ด โํด๋์ค์ด๋ฆ.ํด๋์ค๋ณ์โ์ ํํ๋ก ํ๋ ๊ฒ์ด ์ข๋ค. ์ฐธ์กฐ๋ณ์ c1, c2๋ฅผ ํตํด์๋ ํด๋์ค ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ด๋ ๊ฒ ํ๋ฉด ํด๋์ค ๋ณ์๋ฅผ ์ธ์คํด์ค ๋ณ์๋ก ์คํดํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ง์ญ๋ณ์(local variable) - ๋ฉ์๋ ๋ด์ ์ ์ธ๋์ด ๋ฉ์๋ ๋ด์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๋ฉ์๋๊ฐ ์ข ๋ฃ๋๋ฉด ์๋ฉธ๋์ด ์ฌ์ฉํ ์ ์๊ฒ๋๋ค. for๋ฌธ ๋๋ while๋ฌธ์ ๋ธ๋ญ ๋ด์ ์ ์ธ๋ ์ง์ญ๋ณ์๋, ์ง์ญ๋ณ์๊ฐ ์ ์ธ๋ ๋ธ๋ญ { } ๋ด์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ๋ธ๋ญ { }์ ๋ฒ์ด๋๋ฉด ์๋ฉธ๋์ด ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
+) iv๋ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋๋ง๋ค ์์ฑ๋๋ฏ๋ก ์ธ์คํด์ค๋ง๋ค ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ฐ์ ์ ์งํ์ง๋ง cv๋ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ํ๋์ ์ ์ฅ๊ณต๊ฐ์ ๊ณต์ ํ๋ฏ๋ก, ํญ์ ๊ณตํต๋ ๊ฐ์ ๊ฐ๋๋ค.
14. ๋ฉ์๋๋?
๋ฉ์๋(method) : ํน์ ์์ ์ ์ํํ๋ ์ผ๋ จ์ ๋ฌธ์ฅ๋ค์ ํ๋๋ก ๋ฌถ์ ๊ฒ. โ ๋ช ๋ น๋ฌธ ๋ฌถ์ ๊ฒ
- ์ํ์ ํจ์์ ์ ์ฌ
- ์ด๋ค ๊ฐ์ ์ ๋ ฅํ๋ฉด ์ด ๊ฐ์ผ๋ก ์์ ์ ์ํํด์ ๊ฒฐ๊ณผ ๋ฐํ
- ๋ธ๋๋ฐ์ค(black box)
- ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ๊ณผ์ ์ ๊ฑฐ์ณ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ด๋์ง ์ ํ ๋ชฐ๋ผ๋๋จ. ์ ๋ ฅ๊ณผ ์ถ๋ ฅ๋ง ์๋ฉด ๋๋ค.
- println()์ด๋ random()๊ณผ ๊ฐ์ ๋ฉ์๋๋ค ์ญ์ ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ชฐ๋ผ๋ ์ฌ์ฉํ๋๋ฐ ์๋ฌด๋ฐ ์ด๋ ค์์ด ์์๋ค.
๋ฉ์๋๋ โ์ ์ธ๋ถ(header, ๋จธ๋ฆฌ)โ์ โ๊ตฌํ๋ถ(body, ๋ชธํต)โ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
๋ฐํํ์
๋ฉ์๋์ด๋ฆ(ํ์
๋ณ์๋ช
, ํ์
๋ณ์๋ช
, ...) { // ์ ์ธ๋ถ
// ๋ฉ์๋ ํธ์ถ ์ ์ํ๋ ์ฝ๋ // ๊ตฌํ๋ถ
}
int add(int a, int b) { // ์ ์ธ๋ถ
int result = a + b; // ๊ตฌํ๋ถ
retrun result;
}
15. ๋ฉ์๋์ ์ ์ธ๋ถ
๋ฉ์๋์ ์ ์ธ๋ถ๋ ํ์ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์ํ์ง ์๋๋ก ์ ์ค์ด ์์ฑํด์ผํ๋ค. ๋ฉ์๋์ ์ ์ธ๋ถ๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด, ๊ทธ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ ๋ชจ๋ ๊ณณ์ด ํจ๊ป ๋ณ๊ฒฝ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
22. ํธ์ถ์คํ(call stack)
<ํธ์ถ์คํ์ ํน์ง>
- ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ์ํ์ ํ์ํ ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์คํ์ ํ ๋น๋ฐ๋๋ค.
- ๋ฉ์๋๊ฐ ์ํ์ ๋ง์น๊ณ ๋๋ฉด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐํํ๊ณ ์คํ์์ ์ ๊ฑฐ๋๋ค.
- ํธ์ถ์คํ์ ์ ์ผ ์์ ์๋ ๋ฉ์๋๊ฐ ํ์ฌ ์คํ ์ค์ธ ๋ฉ์๋์ด๋ค.
- ์๋์ ์๋ ๋ฉ์๋๊ฐ ๋ฐ๋ก ์์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฉ์๋์ด๋ค.
23, 24. ๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์, ์ฐธ์กฐํ ๋งค๊ฐ๋ณ์
๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์ : ๋ณ์์ ๊ฐ์ ์ฝ๊ธฐ๋ง ํ ์ ์๋ค.(read only)
์ฐธ์กฐํ ๋งค๊ฐ๋ณ์ : ๋ณ์์ ๊ฐ์ ์ฝ๊ณ ๋ณ๊ฒฝํ ์ ์๋ค.(read & write)
25. ์ฐธ์กฐํ ๋ฐํํ์
๋ชจ๋ ์ฐธ์กฐํ ํ์ ์ ๊ฐ์ โ๊ฐ์ฒด์ ์ฃผ์'์ด๋ฏ๋ก ๊ทธ์ ์ ์๊ฐ์ด ๋ฐํ๋๋ ๊ฒ์ผ ๋ฟ ํน๋ณํ ๊ฒ์ด ์๋ค.
class Data3 { int x; }
class Ex6_8 {
public static void main(String[] args) {
Data3 d = new Data3();
d.x = 10;
Data3 d2 = copy(d);
System.out.println("d.x = " + d.x);
System.out.println("d2.x = " + d2.x);
}
static Data3 copy(Data3 d) {
Data3 tmp = new Data3();
tmp.x = d.x;
return tmp;
}
}

26. static ๋ฉ์๋์ ์ธ์คํด์ค ๋ฉ์๋
์ด๋ ๊ฒฝ์ฐ์ static์ ์ฌ์ฉํด์ ํด๋์ค ๋ฉ์๋๋ก ์ ์ํด์ผํ๋ ๊ฒ์ผ๊น?
iv๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ๋ฉ์๋์ static์ ๋ถ์ด๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณผ ์ ์๋ค.
28. static์ ์ธ์ ๋ถ์ด์ผ ํ ๊น?
- ํด๋์ค๋ฅผ ์ค๊ณํ ๋, ๋ฉค๋ฒ๋ณ์ ์ค ๋ชจ๋ ์ธ์คํด์ค์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ static์ ๋ถ์ธ๋ค.
- ์์ฑ๋ ๊ฐ ์ธ์คํด์ค๋ ์๋ก ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ์ธ์คํด์ค ๋ณ์(iv)๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ ์ ์งํ๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ์ธ์คํด์ค์์ ๊ฐ์ ๊ฐ์ ์ ์งํด์ผ ํ๋ ๋ณ์๋ static์ ๋ถ์ฌ์ ํด๋์ค๋ณ์๋ก ์ ์ํด์ผ ํ๋ค.
- ํด๋์ค ๋ณ์(static ๋ณ์)๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์์๋ ์ฌ์ฉํ ์ ์๋ค.
- static์ด ๋ถ์ ๋ณ์(ํด๋์ค๋ณ์)๋ ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ ์ด๋ฏธ ์๋์ ์ผ๋ก ์์ฑ๋์ง ๋๋ฌธ์ด๋ค.
- ํด๋์ค ๋ฉ์๋(static ๋ฉ์๋)๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค๊ฐ ๋ฐ๋์ ์กด์ฌํด์ผ๋ง ์ฌ์ฉํ ์ ์๋๋ฐ, ํด๋์ค ๋ฉ์๋(static์ด ๋ถ์ ๋ฉ์๋)๋ ์ธ์คํด์ค ์์ฑ ์์ด ํธ์ถ ๊ฐ๋ฅํ๋ฏ๋ก ํด๋์ค ๋ฉ์๋๊ฐ ํธ์ถ๋์์ ๋ ์ธ์คํด์ค๊ฐ ์กด์ฌํ์ง ์์ ์๋ ์๋ค.
๋ฐ๋ฉด์ ์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค๋ฉ์๋๋ static์ด ๋ถ์ ๋ฉค๋ฒ๋ค์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ธ์ ๋ ๊ฐ๋ฅํ๋ค. ์ธ์คํด์ค ๋ณ์๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ static๋ณ์๊ฐ ์ด๋ฏธ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค๊ฐ ๋ฐ๋์ ์กด์ฌํด์ผ๋ง ์ฌ์ฉํ ์ ์๋๋ฐ, ํด๋์ค ๋ฉ์๋(static์ด ๋ถ์ ๋ฉ์๋)๋ ์ธ์คํด์ค ์์ฑ ์์ด ํธ์ถ ๊ฐ๋ฅํ๋ฏ๋ก ํด๋์ค ๋ฉ์๋๊ฐ ํธ์ถ๋์์ ๋ ์ธ์คํด์ค๊ฐ ์กด์ฌํ์ง ์์ ์๋ ์๋ค.
- ๋ฉ์๋ ๋ด์์ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด, static์ ๋ถ์ด๋ ๊ฒ์ ๊ณ ๋ คํ๋ค.
- ๋ฉ์๋์ ์์ ๋ด์ฉ ์ค์์ iv๋ฅผ ํ์๋ก ํ๋ค๋ฉด, static์ ๋ถ์ผ ์ ์๋ค. ๋ฐ๋๋ก iv๋ฅผ ํ์๋ก ํ์ง ์๋๋ค๋ฉด static์ ๋ถ์ด์. ๋ฉ์๋ ํธ์ถ์๊ฐ์ด ์งง์์ง๋ฏ๋ก ์ฑ๋ฅ์ด ํฅ์๋๋ค. static์ ์ ๋ถ์ธ ๋ฉ์๋(์ธ์คํด์ค ๋ฉ์๋)๋ ์คํ ์ ํธ์ถ๋์ด์ผ ํ ๋ฉ์๋๋ฅผ ์ฐพ๋ ๊ณผ์ ์ด ์ถ๊ฐ์ ์ผ๋ก ํ์ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฐ๋ค.
- ์์ฑํ ๋ฉ์๋ ์ค์์ ์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋์ static์ ๋ถ์ผ ๊ฒ์ ๊ณ ๋ คํ๋ค.
30. ์ค๋ฒ๋ก๋ฉ(overloading)
- ํ ํด๋์ค ๋ด์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ํ๋ ๊ฒ
์กฐ๊ฑด : ๋งค๊ฐ๋ณ์์ ๊ฐ์, ํ์ ์ด ๋ฌ๋ผ์ผ ํ๋ค.
์ค๋ฒ๋ก๋ฉ์ ๋ํ์ ์ธ ์ : println()
PrintStreamํด๋์ค์๋ ์ด๋ค ์ข ๋ฅ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ฅํด๋ ์ถ๋ ฅํ ์ ์๋๋ก ์๋์ ๊ฐ์ด 10๊ฐ์ ์ค๋ฒ๋ก๋ฉ๋ println๋ฉ์๋๋ฅผ ์ ์ํด๋๊ณ ์๋ค.
void println()
void println(boolean x)
void println(char x)
void println(char[] x)
void println(double x)
void println(float x)
void println(int x)
void println(long x)
void println(Object x)
void println(String x)
println ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ์ฃผ๋ ๊ฐ์ ํ์ ์ ๋ฐ๋ผ์ ์์ ์ค๋ฒ๋ก๋ฉ๋ ๋ฉ์๋๋ค ์ค์ ํ๋๊ฐ ์ ํ๋์ด ์คํ๋๋ ๊ฒ์ด๋ค.
32. ์์ฑ์(constructor)
<์ ์>
์์ฑ์ : ์ธ์คํด์ค ์ด๊ธฐํ ๋ฉ์๋
<ํน์ง>
- ์์ฑ์์ ์ด๋ฆ์ ํด๋์ค์ ์ด๋ฆ๊ณผ ๊ฐ๋ค
- ์์ฑ์๋ ๋ฆฌํด ๊ฐ์ด ์๋ค.
โ ์์ฑ์๋ ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ์ ๋ฆฌํด๊ฐ์ด ์๋ค๋ ์๋ฏธ์ void๋ฅผ ๋ถ์ฌ์ผ ํ์ง๋ง, ๋ชจ๋ ์์ฑ์๊ฐ ๋ฆฌํด๊ฐ์ด ์์ผ๋ฏ๋ก void๋ฅผ ์๋ตํ ์ ์๊ฒ ํ ๊ฒ
<์ ์ ๋ฐฉ๋ฒ>
ํด๋์ค์ด๋ฆ(ํ์
๋ณ์๋ช
, ํ์
๋ณ์๋ช
, ...) {
// ์ธ์คํด์ค ์์ฑ ์ ์ํ๋ ์ฝ๋,
// ์ฃผ๋ก ์ธ์คํด์ค ๋ณ์์ ์ด๊ธฐํ ์ฝ๋๋ฅผ ์ ๋๋ค.
}
class Point {
Point() { // ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์.
...
}
Point(int x, int y) { // ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์.
...
}
}
<์ฃผ์ ํด์ผํ ๊ฒ>
์ฐ์ฐ์ new๊ฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด์ง ์์ฑ์๊ฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ค.
์์ฑ์๋ ๋จ์ํ iv์ ์ด๊ธฐํ์ ์ฌ์ฉ๋๋ ์กฐ๊ธ ํน๋ณํ ๋ฉ์๋์ผ ๋ฟ์.
33. ๊ธฐ๋ณธ ์์ฑ์(default constructor)
๋ชจ๋ ํด๋์ค์๋ ๋ฐ๋์ ํ๋ ์ด์์ ์์ฑ์๊ฐ ์ ์๋์ด ์์ด์ผ ํ๋ค.
๊ทธ๋ฌ๋ ์ง๊ธ๊น์ง ํด๋์ค์ ์์ฑ์๋ฅผ ์ ์ํ์ง ์๊ณ ๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์์๋ ์ด์ ๋ ์ปดํ์ผ๋ฌ๊ฐ ์ ๊ณตํ๋ โ๊ธฐ๋ณธ ์์ฑ์(default constructor)โ ๋๋ถ์ด์๋ค.
์ปดํ์ผ ํ ๋, ์์คํ์ผ(*.java)์ ํด๋์ค์ ์์ฑ์๊ฐ ํ๋๋ ์ ์๋์ง ์์ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๋ ์๋์ ์ผ๋ก ์๋์ ๊ฐ์ ๋ด์ฉ์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ถ๊ฐํ์ฌ ์ปดํ์ผํ๋ค.
ํด๋์ค์ด๋ฆ() {} // ๊ธฐ๋ณธ ์์ฑ์
Point() {} // Point ํด๋์ค์ ๊ธฐ๋ณธ ์์ฑ์
+) ํน๋ณํ ์ธ์คํด์ค ์ด๊ธฐํ ์์ ์ด ์๊ตฌ๋์ด์ง์ง ์๋๋ค๋ฉด ์์ฑ์๋ฅผ ์ ์ํ์ง ์๊ณ ์ปดํ์ผ๋ฌ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ์ข๋ค.
// ์์
class Data_1 {
int value;
}
class Data_2 {
int value;
Data_2(int x) { // ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์
value = x;
}
}
class Ex6_11 {
public static void main(String[] args) {
Data_1 d1 = new Data_1();
Data_2 d2 = new Data_2(); // compile error ๋ฐ์
}
}
์ ์์ ๋ฅผ ์ปดํ์ผํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. The constructor Data_2() is undefined
๋ผ๋ ๋ด์ฉ์ ์๋ฌ๋ฉ์์ง์ธ๋ฐ, Data_2 ํด๋์ค์ ์์ฑ์ Data_2()๊ฐ ์ ์๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
Data_1์๋ ์ ์๋์ด์๋ ์์ฑ์๊ฐ ํ๋๋ ์์ผ๋ฏ๋ก ์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ถ๊ฐํด์ฃผ์์ง๋ง, Data_2์๋ ์ด๋ฏธ ์์ฑ์ Data_2(int x)๊ฐ ์ ์๋์ด ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์ถ๊ฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์๋์ ์ผ๋ก ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ถ๊ฐํด์ฃผ๋ ๊ฒฝ์ฐ๋ โํด๋์ค ๋ด์ ์์ฑ์๊ฐ ํ๋๋ ์์ ๋โ๋ฟ์ด๋ผ๋ ๊ฒ์ ๋ช ์ฌํด์ผํ๋ค.
Data_1 d1 = new Data_1();
Data_1 d2 = new Data_2();
โ
Data_1 d1 = new Data_1();
Data_1 d2 = new Data_2(10);
์ด ์์ ์์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๊ธฐ ์ํด์๋ ์์ ์ค๋ฅธ์ชฝ ์ฝ๋์ ๊ฐ์ด Data_2 ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ์์ฑ์ Data_2(int x)๋ฅผ ์ฌ์ฉํ๋๊ฐ, ์๋๋ฉด Data_2 ํด๋์ค์ ์์ฑ์ Data_2()๋ฅผ ์ถ๊ฐ๋ก ์ ์ํด์ฃผ๋ฉด ๋๋ค.
34. ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์
Car c = new Car();
c.color = "white";
c.gearType = "auto";
c.door = 4;
โ
Car c = new Car("white", "auto", 4);
์์ ์์ชฝ ์ฝ๋ ๋ชจ๋ ๊ฐ์ ๋ด์ฉ์ด์ง๋ง, ์ค๋ฅธ์ชฝ์ ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ด๋ค. ์ด์ฒ๋ผ ํด๋์ค๋ฅผ ์์ฑํ ๋ ๋ค์ํ ์์ฑ์๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ์ธ์คํด์ค ์์ฑ ํ์ ๋ณ๋๋ก ์ด๊ธฐํ๋ฅผ ํ์ง ์์๋ ๋๊ฒ ํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
36. ์์ฑ์์์ ๋ค๋ฅธ ์์ฑ์ ํธ์ถํ๊ธฐ - this()
1. ์์ฑ์์ ์ด๋ฆ์ผ๋ก ํด๋์ค ์ด๋ฆ ๋์ this๋ฅผ ์ฌ์ฉํ๋ค.
2. ํ ์์ฑ์์์ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ ๋๋ ๋ฐ๋์ ์ฒซ ์ค์์๋ง ํธ์ถ์ด ๊ฐ๋ฅํ๋ค.
Car(String color) {
door = 5; // ์ฒซ ๋ฒ์งธ ์ค
Car(color, "auto", 4); // ์๋ฌ1. ์์ฑ์์ ๋ ๋ฒ์งธ ์ค์์ ๋ค๋ฅธ ์์ฑ์ ํธ์ถ
// ์๋ฌ2. this(color, "auto", 4);๋ก ํด์ผํจ
}
์์ฑ์์์ ๋ค๋ฅธ ์์ฑ์๋ฅผ ์ฒซ ์ค์์๋ง ํธ์ถ์ด ๊ฐ๋ฅํ๋๋ก ํ ์ด์ ๋ ์์ฑ์ ๋ด์์ ์ด๊ธฐํ ์์ ๋์ค์ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด, ํธ์ถ๋ ๋ค๋ฅธ ์์ฑ์์ ๋ด์์๋ ๋ฉค๋ฒ๋ณ์๋ค์ ๊ฐ์ ์ด๊ธฐํํ ๊ฒ์ด๋ฏ๋ก ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ๊ธฐ ์ด์ ์ ์ด๊ธฐํ ์์ ์ด ๋ฌด์๋ฏธํด์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
Car() {
color = "white";
gearType = "auto";
door = 4;
}
โ
Car {
this("white", "auto", 4);
}
๊ฐ์ ํด๋์ค ๋ด์ ์์ฑ์๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์๋ก ๊ด๊ณ๊ฐ ๊น์ ๊ฒฝ์ฐ๊ฐ ๋ง์์ ์ด์ฒ๋ผ ์๋ก ํธ์ถํ๋๋ก ํ์ฌ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐํด์ฃผ๋ฉด ๋ ์ข์ ์ฝ๋๋ฅผ ์ป์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ์ ๋ณด๋ค ์ ์ ์ฝ๋๋ง์ ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
37. ๊ฐ์ฒด ์์ ์ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ณ์ - this
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
โ
Car(String color, String gearType, int door) {
// this.color๋ iv, color๋ lv
this.color = color;
this.gearType = gearType
this.door = door;
}
์ค๋ฅธ์ชฝ ์ฝ๋์์์ฒ๋ผ ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก ์ ์ธ๋ ๋ณ์์ ์ด๋ฆ์ด color๋ก ์ธ์คํด์ค ๋ณ์ color์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ด๋ฆ๋ง์ผ๋ก๋ ๋ ๋ณ์๊ฐ ์๋ก ๊ตฌ๋ณ์ด ์ ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ธ์คํด์ค ๋ณ์ ์์ โthisโ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ธ์คํด์ค ๋ฉ์๋์ ์ง์ญ๋ณ์๋ก ์จ๊ฒจ์ง ์ฑ๋ก ์กด์ฌํ๋ค.
this(), this(๋งค๊ฐ๋ณ์) ์์ฑ์, ๊ฐ์ ํด๋์ค์ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ๋ค.
+) this์ this()๋ ๋น์ทํ๊ฒ ์๊ฒผ์ ๋ฟ ์์ ํ ๋ค๋ฆ. this๋ โ์ฐธ์กฐ๋ณ์'์ด๊ณ this()๋ โ์์ฑ์'์ด๋ค.
38. ๋ณ์์ ์ด๊ธฐํ
<๊ฐ ํ์ ์ ๊ธฐ๋ณธ๊ฐ(default value)>
์๋ฃํ | ๊ธฐ๋ณธ๊ฐ |
---|---|
boolean | false |
char | โ\u0000โ |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d ๋๋ 0.0 |
์ฐธ์กฐํ | null |
39. ๋ฉค๋ฒ๋ณ์์ ์ด๊ธฐํ
2. ์๋ ์ด๊ธฐํ โ ๋ช ์์ ์ด๊ธฐํ(๊ฐ๋จ) โ ์ด๊ธฐํ ๋ธ๋ญ, ์์ฑ์(๋ณต์ก)
๋ช ์์ ์ด๊ธฐํ(explicit initialization)
๋ณ์๋ฅผ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํํ๋ ๊ฒ
class Car {
int door = 4; // ๊ธฐ๋ณธํ(primitive type) ๋ณ์์ ์ด๊ธฐํ
Engine e = new Engine(); // ์ฐธ์กฐํ(reference type) ๋ณ์์ ์ด๊ธฐํ
}
์ด๊ธฐํ ๋ธ๋ญ(initialization block)
- ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ : ํด๋์ค ๋ณ์์ ๋ณต์กํ ์ด๊ธฐํ์ ์ฌ์ฉ๋๋ค.
- ์ธ์คํด์ค ์ด๊ธฐํ ๋ธ๋ญ : ์ธ์คํด์ค ๋ณ์์ ๋ณต์กํ ์ด๊ธฐํ์ ์ฌ์ฉ๋๋ค.
์ด๊ธฐํ ๋ธ๋ญ์ ์์ฑํ๋ ค๋ฉด, ์ธ์คํด์ค ์ด๊ธฐํ ๋ธ๋ญ์ ๋จ์ํ ํด๋์ค ๋ด์ ๋ธ๋ญ {} ๋ง๋ค๊ณ ๊ทธ ์์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ๋ง ํ๋ฉด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ์ ์ธ์คํด์ค ์ด๊ธฐํ ๋ธ๋ญ ์์ ๋จ์ํ static์ ๋ง๋ถ์ด๊ธฐ๋ง ํ๋ฉด ๋๋ค.
// ์์ 6-14
class Ex6_14 {
static {
System.out.println("static { } "); // ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ
}
{
System.out.println("{ }"); // ์ธ์คํด์ค ์ด๊ธฐํ ๋ธ๋ญ
}
public Ex6_14() {
System.out.println("์์ฑ์");
}
public static void main(String[] args) {
System.out.println("Ex6_14 bt = new Ex6_14();");
Ex6_14 bt = new Ex6_14();
System.out.println("Ex6_14 bt2 = new Ex6_14();");
Ex6_14 bt2 = new Ex6_14();
}
}
<์คํ๊ฒฐ๊ณผ>
static { }
Ex6_14 bt = new Ex6_14();
{ }
์์ฑ์
Ex6_14 bt2 = new Ex6_14();
{ }
์์ฑ์
์์ ๊ฐ ์คํ๋๋ฉด์ Ex6_14์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ๋ ๋, ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ์ด ๊ฐ์ฅ ๋จผ์ ์ํ๋์ด โstatic {}โ์ด ํ๋ฉด์ ์ถ๋ ฅ๋๋ค. ๊ทธ ๋ค์์ main๋ฉ์๋๊ฐ ์ํ๋์ด Ex6_14์ ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ฉด์ ์ธ์คํด์ค ์ด๊ธฐํ ๋ธ๋ญ์ด ๋จผ์ ์ํ๋๊ณ , ๋์ผ๋ก ์์ฑ์๊ฐ ์ํ๋๋ค.
์์ ์คํ๊ฒฐ๊ณผ์์๋ ์ ์ ์๋ฏ์ด ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ์ ์ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ๋ ๋ ํ๋ฒ๋ง ์ํ๋์์ง๋ง, ์ธ์คํด์ค ์ด๊ธฐํ ๋ธ๋ญ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋๋ง๋ค ์ํ๋์๋ค.
// ์์ 6-15
class Ex6_15 {
static int[] arr = new int[10];
static {
for(int i = 0 ; i < arr.length; i++) {
// 1๊ณผ 10์ฌ์ด์ ์์์ ๊ฐ์ ๋ฐฐ์ด arr์ ์ ์ฅํ๋ค.
arr[i] = (int)(Math.random() * 10) + 1;
}
}
public static void main(String[] args) {
for(int i = 0; i < arr.length; i++) {
System.out.printf("arr[%d] : %d\n", i, arr[i]);
}
}
}
๋ช ์์ ์ด๊ธฐํ๋ฅผ ํตํด ๋ฐฐ์ด arr์ ์์ฑํ๊ณ , ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ์ ์ด์ฉํด์ ๋ฐฐ์ด์ ๊ฐ ์์๋ค์ random()์ ์ฌ์ฉํด์ ์์์ ๊ฐ์ผ๋ก ์ฑ์ฐ๋๋ก ํ๋ค.
์ด์ฒ๋ผ ๋ฐฐ์ด์ด๋ ์์ธ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ด๊ธฐํ์์๋ ๋ช ์์ ์ด๊ธฐํ๋ง์ผ๋ก๋ ๋ณต์กํ ์์ ์ ํ ์ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ ์ถ๊ฐ์ ์ผ๋ก ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ์ ์ฌ์ฉํ๋๋ก ํ๋ค.
<์คํ๊ฒฐ๊ณผ>
arr[0] : 1
arr[1] : 2
arr[2] : 7
arr[3] : 6
arr[4] : 4
arr[5] : 8
arr[6] : 8
arr[7] : 8
arr[8] : 7
arr[9] : 5
Uploaded by N2T