Back-End/Java

์ž๋ฐ”์˜ ์ •์„ 6์žฅ: ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋… 1

์ฑ”๐Ÿป 2024. 1. 23. 18:20
6๏ธโƒฃ

[ ์ถœ์ฒ˜ ]
์ž๋ฐ”์˜ ์ •์„:
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) - ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜์˜ ๊ฒฐํ•ฉ

<ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์ธ ๊ด€์ ์—์„œ ํด๋ž˜์Šค์˜ ์ •์˜์™€ ์˜๋ฏธ>

โ•
1. ๋ณ€์ˆ˜ : ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„

2. ๋ฐฐ์—ด : ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„

3. ๊ตฌ์กฐ์ฒด : ์„œ๋กœ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ข…๋ฅ˜์— ๊ด€๊ณ„์—†์ด ํ•˜๋‚˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„

4. ํด๋ž˜์Šค : ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜์˜ ๊ฒฐํ•ฉ(๊ตฌ์กฐ์ฒด + ํ•จ์ˆ˜)

๊ทธ๋™์•ˆ ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜๊ฐ€ ์„œ๋กœ ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ผ๋ฆฌ, ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ผ๋ฆฌ ๋”ฐ๋กœ ๋‹ค๋ฃจ์–ด์ ธ์™”์ง€๋งŒ, ์‚ฌ์‹ค ํ•จ์ˆ˜๋Š” ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์ž‘์—…์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ฒฝ์šฐ์— ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜๋Š” ๊ด€๊ณ„๊ฐ€ ๊นŠ๋‹ค.

๊ทธ๋ž˜์„œ ์ž๋ฐ”์™€ ๊ฐ™์€ ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์—์„œ๋Š” ๋ณ€์ˆ˜(๋ฐ์ดํ„ฐ)์™€ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์— ์ •์˜ํ•˜์—ฌ ์„œ๋กœ ๊ด€๊ณ„๊ฐ€ ๊นŠ์€ ๋ณ€์ˆ˜๋“ค์„ ์ •์˜ํ•˜๊ณ  ํ•จ์ˆ˜๋“ค์„ ํ•จ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค.

์„œ๋กœ ๊ด€๋ จ๋œ ๋ณ€์ˆ˜๋“ค์„ ์ •์˜ํ•˜๊ณ  ์ด๋“ค์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜๋“ค์„ ํ•จ๊ป˜ ์ •์˜ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ํด๋ž˜์Šค์ด๋‹ค. C์–ธ์–ด์—์„œ๋Š” ๋ฌธ์ž์—ด์„ ๋ฌธ์ž์˜ ๋ฐฐ์—ด๋กœ ๋‹ค๋ฃจ์ง€๋งŒ, ์ž๋ฐ”์—์„œ๋Š” String์ด๋ผ๋Š” ํด๋ž˜์Šค๋กœ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃฌ๋‹ค. ๋ฌธ์ž์—ด์„ ๋‹จ์ˆœํžˆ ๋ฌธ์ž์˜ ๋ฐฐ์—ด๋กœ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ํด๋ž˜์Šค๋กœ ์ •์˜ํ•œ ์ด์œ ๋Š” ๋ฌธ์ž์—ด๊ณผ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š”๋ฐ ํ•„์š”ํ•œ ํ•จ์ˆ˜๋“ค์„ ๋ฌถ๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

10. ํด๋ž˜์Šค์˜ ์ •์˜(2) - ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…

์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…(user-defined type) : ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(primitive type)์™ธ์— ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์„œ๋กœ ๊ด€๋ จ๋œ ๋ณ€์ˆ˜๋“ค์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ

์ž๋ฐ”์™€ ๊ฐ™์€ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ๋Š” ํด๋ž˜์Šค๊ฐ€ ๊ณง ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…์ด๋‹ค. ๊ธฐ๋ณธํ˜•์˜ ๊ฐœ์ˆ˜๋Š” 8๊ฐœ๋กœ ์ •ํ•ด์ ธ์žˆ์ง€๋งŒ ์ฐธ์กฐํ˜•์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์€ ์ด์œ ๋Š” ์ด์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

11. ์„ ์–ธ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜

๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜์„ ์–ธ์œ„์น˜์ƒ์„ฑ์‹œ๊ธฐ
ํด๋ž˜์Šค ๋ณ€์ˆ˜
(class variable)
ํด๋ž˜์Šค ์˜์—ญํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ๋•Œ
์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
(instance variable)
ํด๋ž˜์Šค ์˜์—ญ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ
์ง€์—ญ๋ณ€์ˆ˜
(local variable)
ํด๋ž˜์Šค ์˜์—ญ ์ด์™ธ์˜ ์˜์—ญ
(๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž, ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ ๋‚ด๋ถ€)
๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์ˆ˜ํ–‰๋˜์—ˆ์„ ๋•Œ
  1. ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(instance variable) - ํด๋ž˜์Šค ์˜์—ญ์— ์„ ์–ธ๋˜๋ฉฐ, ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๊ทธ๋ž˜์„œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(iv)์˜ ๊ฐ’์„ ์ฝ์–ด ์˜ค๊ฑฐ๋‚˜ ์ €์žฅํ•˜๋ ค๋ฉด ๋จผ์ € ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค. ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ ์ €์žฅ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๊ณ ์œ ํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผํ•˜๋Š” ์†์„ฑ์˜ ๊ฒฝ์šฐ, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ๋‹ค.
  1. ํด๋ž˜์Šค ๋ณ€์ˆ˜(class variable) - ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(iv) ์•ž์— static์„ ๋ถ™์ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ์ €์žฅ๊ณต๊ฐ„์„ ๊ฐ–๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€๋Š” ๋‹ฌ๋ฆฌ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณตํ†ต๋œ ์ €์žฅ๊ณต๊ฐ„(๋ณ€์ˆ˜)์„ ๊ณต์œ ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•œ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋“ค์ด ๊ณตํ†ต์ ์ธ ๊ฐ’์„ ์œ ์ง€ํ•ด์•ผํ•˜๋Š” ์†์„ฑ์˜ ๊ฒฝ์šฐ, ํด๋ž˜์Šค ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค.

    +) ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Card.width์™€ ๊ฐ™์ด โ€˜ํด๋ž˜์Šค์ด๋ฆ„.ํด๋ž˜์Šค๋ณ€์ˆ˜โ€™์˜ ํ˜•ํƒœ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ฐธ์กฐ๋ณ€์ˆ˜ c1, c2๋ฅผ ํ†ตํ•ด์„œ๋„ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ์˜คํ•ดํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  1. ์ง€์—ญ๋ณ€์ˆ˜(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์„ ์–ธ์ œ ๋ถ™์–ด์•ผ ํ• ๊นŒ?

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

      ๋ฐ˜๋ฉด์— ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋‚˜ ์ธ์Šคํ„ด์Šค๋ฉ”์„œ๋“œ๋Š” static์ด ๋ถ™์€ ๋ฉค๋ฒ„๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์–ธ์ œ๋‚˜ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์€ static๋ณ€์ˆ˜๊ฐ€ ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  1. ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, static์„ ๋ถ™์ด๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•œ๋‹ค.
    • ๋ฉ”์„œ๋“œ์˜ ์ž‘์—…๋‚ด์šฉ ์ค‘์—์„œ iv๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค๋ฉด, static์„ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค. ๋ฐ˜๋Œ€๋กœ iv๋ฅผ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด static์„ ๋ถ™์ด์ž. ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์‹œ๊ฐ„์ด ์งง์•„์ง€๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค. 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)

<์ •์˜>

์ƒ์„ฑ์ž : ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œ

<ํŠน์ง•>

  1. ์ƒ์„ฑ์ž์˜ ์ด๋ฆ„์€ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๊ฐ™๋‹ค
  1. ์ƒ์„ฑ์ž๋Š” ๋ฆฌํ„ด ๊ฐ’์ด ์—†๋‹ค.

    โ†’ ์ƒ์„ฑ์ž๋„ ๋ฉ”์„œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ„ด๊ฐ’์ด ์—†๋‹ค๋Š” ์˜๋ฏธ์˜ 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๋Š” โ€˜์ฐธ์กฐ๋ณ€์ˆ˜'์ด๊ณ  this()๋Š” โ€˜์ƒ์„ฑ์ž'์ด๋‹ค.

38. ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”

๐Ÿ’ก
๋ฉค๋ฒ„๋ณ€์ˆ˜(ํด๋ž˜์Šค ๋ณ€์ˆ˜์™€ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜)์™€ ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”๋Š” ์„ ํƒ์ด์ง€๋งŒ, ์ง€์—ญ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๋Š” ํ•„์ˆ˜์ด๋‹ค.

<๊ฐ ํƒ€์ž…์˜ ๊ธฐ๋ณธ๊ฐ’(default value)>

์ž๋ฃŒํ˜•๊ธฐ๋ณธ๊ฐ’
booleanfalse
charโ€˜\u0000โ€™
byte, short, int0
long0L
float0.0f
double0.0d ๋˜๋Š” 0.0
์ฐธ์กฐํ˜•null

39. ๋ฉค๋ฒ„๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”

๐Ÿ’ก
1. ํด๋ž˜์Šค ๋ณ€์ˆ˜(cv) โ†’ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜(iv)
2. ์ž๋™ ์ดˆ๊ธฐํ™” โ†’ ๋ช…์‹œ์  ์ดˆ๊ธฐํ™”(๊ฐ„๋‹จ) โ†’ ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ, ์ƒ์„ฑ์ž(๋ณต์žก)

๋ช…์‹œ์  ์ดˆ๊ธฐํ™”(explicit initialization)

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ

class Car {
	int door = 4;            // ๊ธฐ๋ณธํ˜•(primitive type) ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”
	Engine e = new Engine(); // ์ฐธ์กฐํ˜•(reference type) ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”
}

์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ(initialization block)

  1. ํด๋ž˜์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ : ํด๋ž˜์Šค ๋ณ€์ˆ˜์˜ ๋ณต์žกํ•œ ์ดˆ๊ธฐํ™”์— ์‚ฌ์šฉ๋œ๋‹ค.
  1. ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ : ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์˜ ๋ณต์žกํ•œ ์ดˆ๊ธฐํ™”์— ์‚ฌ์šฉ๋œ๋‹ค.

์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด, ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์€ ๋‹จ์ˆœํžˆ ํด๋ž˜์Šค ๋‚ด์— ๋ธ”๋Ÿญ {} ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ž˜์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์€ ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ ์•ž์— ๋‹จ์ˆœํžˆ 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