Notice
Recent Posts
Recent Comments
ยซ   2024/12   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
In Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

A Joyful AI Research Journey๐ŸŒณ๐Ÿ˜Š

[39] 230222 Java Ch. 9 ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค: 1. ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค ์†Œ๊ฐœ, 2. ์ต๋ช… ๊ฐ์ฒด [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 39์ผ] ๋ณธ๋ฌธ

๐ŸŒณBootcamp Revision 2023โœจ/Spring Framework, Java

[39] 230222 Java Ch. 9 ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค: 1. ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค ์†Œ๊ฐœ, 2. ์ต๋ช… ๊ฐ์ฒด [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 39์ผ]

yjyuwisely 2023. 2. 22. 12:50

230222 Wed 39th class

Ch. 9 ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค
Ch. 10 ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
(์ฃผ์ œ๋ณ„๋กœ ๋ฌถ๊ธฐ ์œ„ํ•ด ์œ—๊ธ€๋กœ ๊ธ€ ๋‚ด์šฉ ์˜ฎ๊น€.) 
์ง„๋„: p. 406 ~ (๊ต์žฌ: ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ”, ์ €์ž: ์‹ ์šฉ๊ถŒ)
ํ•œ๋น›๋ฏธ๋””์–ด_ํ˜ผ๊ณต์ž_์šฉ์–ด์ง‘.pdf
์šฉ์–ด ์ฐธ๊ณ 

 

ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ” | ์‹ ์šฉ๊ถŒ - ๊ต๋ณด๋ฌธ๊ณ 

ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋Š” ์ž๋ฐ” | ํ˜ผ์ž ํ•ด๋„ ์ถฉ๋ถ„ํ•˜๋‹ค! 1:1 ๊ณผ์™ธํ•˜๋“ฏ ๋ฐฐ์šฐ๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž์Šต์„œ (JAVA 8 &11 ์ง€์›) ์ด ์ฑ…์€ ๋…ํ•™์œผ๋กœ ์ž๋ฐ”๋ฅผ ๋ฐฐ์šฐ๋Š” ์ž…๋ฌธ์ž๊ฐ€ ‘๊ผญ ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ์ œ๋Œ€๋กœ’ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„

product.kyobobook.co.kr

์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ ์ค‘ ๊ธฐ์–ตํ•  ๊ฒƒ์„ ์ •๋ฆฌํ–ˆ๋‹ค. 


์ง€๋‚œ ์ˆ˜์—… ๋•Œ ๋ฐฐ์šด ๊ฒƒ ์ค‘ ๋‹ค์‹œ ๊ธฐ์–ตํ•  ๊ฒƒ

class A{}
class B extends A{}

main(){
          // ์ƒ์†๊ด€๊ณ„์˜ ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜
          // ๋ถ€๋ชจํด๋ž˜์Šค ํƒ€์ž…(A) <- ์ž์‹ํด๋ž˜์Šค(B)
          A a = new B();

          // ์ƒ์†๊ด€๊ณ„์˜ ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜
          // ์ž์‹ํด๋ž˜์Šค ํƒ€์ž…(B) <- ๋ถ€๋ชจํด๋ž˜์Šค(A)
         B() = (B) a;
}
======================================
interface A{} // ์ธํ„ฐํŽ˜์ด์Šค

class B implements A{} // ๊ตฌํ˜„๊ฐ์ฒด

main(){
          // ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„ ๊ฐ์ฒด ๊ด€๊ณ„์˜ ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜
          // ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…(A) <- ์ž์‹ ํด๋ž˜์Šค (B)
          A a = new B();

         // ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„ ๊ฐ์ฒด ๊ด€๊ณ„์˜ ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜
         // ๊ตฌํ˜„๊ฐ์ฒด ํƒ€์ž…(B) <- ์ธํ„ฐํŽ˜์ด์Šค(A)
          B b = (B) a;
}

(๊ฐœ๋…์ ์œผ๋กœ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์ง€๋งŒ ๋ฌธ๋ฒ•์  ์ฐจ์ด๋Š” X)

์ฐธ๊ณ : http://alecture.blogspot.com/2011/05/abstract-class-interface.html


2023.01.30 - [1. Revision 2023/Java] - [21] 230127 Ch. 1 ์ž๋ฐ” ์‹œ์ž‘ํ•˜๊ธฐ: 1. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์ž๋ฐ”, 2. ์ดํด๋ฆฝ์Šค ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•, 3. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๊ณผ์ •

์†Œ์Šค ํŒŒ์ผ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ผ
์†Œ์Šค(source): ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋‚ด์šฉ

์ปดํŒŒ์ผ: ์†Œ์Šค ํŒŒ์ผ์„ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (์ด ์—ญํ•  ๋‹ด๋‹นํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด = ์ปดํŒŒ์ผ๋Ÿฌ)
์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ • 


2023.02.13 - [1. Revision 2023/Java] - [32] 230213 Ch. 6 ์ž๋ฐ” ํด๋ž˜์Šค(3): 5. ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„์™€ ์ •์  ๋ฉค๋ฒ„

์ธ์Šคํ„ด์Šค(instance) ๋ฉค๋ฒ„: ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋งํ•˜๋Š”๋ฐ, ์ด๋“ค์€ ๊ฐ๊ฐ ์ธ์Šคํ„ด์Šค ํ•„๋“œ, ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์— ์†Œ์†๋œ ๋ฉค๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์—†์ด๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.


์ •์  ๋ฉค๋ฒ„: ํด๋ž˜์Šค์— ๊ณ ์ •๋œ ๋ฉค๋ฒ„๋กœ์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋งํ•œ๋‹ค. 
๊ฐ๊ฐ ์ •์  ํ•„๋“œ, ์ •์  ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
์ •์ ๋ฉค๋ฒ„๋Š” ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค์— ์†Œ์†๋œ ๋ฉค๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค ๋ฉค๋ฒ„๋ผ๊ณ ๋„ ํ•œ๋‹ค. 

์ •์  ๋ฉค๋ฒ„ ์„ ์–ธ: ์ •์  ํ•„๋“œ์™€ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ ์„ ์–ธ ์‹œ static ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ถ™์ด๋ฉด ๋œ๋‹ค.


ํด๋ž˜์Šค class [1์žฅ 37์ชฝ] ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋œ ๊ฒƒ. ๊ฐ์ฒด์˜ ์„ค๊ณ„๋„์— ํ•ด๋‹นํ•œ๋‹ค

ํ•„๋“œ field [6์žฅ 212์ชฝ] ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ(๋ฉค๋ฒ„ ๋ณ€์ˆ˜)๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ. ์ƒ์„ฑ์ž์™€ ๋ฉ”์„œ๋“œ ์ „์ฒด์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋˜์ง€ ์•Š๋Š” ํ•œ ๊ฐ์ฒด์™€ ํ•จ๊ป˜ ์กด์žฌํ•œ๋‹ค.

์ƒ์„ฑ์ž constructor [6์žฅ 221์ชฝ] new ์—ฐ์‚ฐ์ž๋กœ ํ˜ธ์ถœ๋˜๋Š” ํŠน๋ณ„ํ•œ ์ค‘๊ด„ํ˜ธ ๋ธ”๋ก. ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์™€ ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฒผ์ง€๋งŒ, ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ๋˜์–ด ์žˆ๊ณ  ๋ฐ˜ํ™˜ํ˜•์ด ์—†๋‹ค.
๊ฐ์ฒด ์ดˆ๊ธฐํ™”๋ž€ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜, ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๋ฅผ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๋ฉ”์„œ๋“œ method [1์žฅ 37์ชฝ] ์–ด๋–ค ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹คํ–‰๋ฌธ๋“ค์„ ๋ชจ์•„ ๋†“์€ ๋ธ”๋ก
• ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ: ๋ฉ”์†Œ๋“œ๋ฅผ ์ฝ”๋“œ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ


2023.02.17 - [1. Revision 2023/Java] - [36] 230217 Ch. 7 ์ž๋ฐ” ์ƒ์†(3): 3. ์ถ”์ƒ ํด๋ž˜์Šค

์ถ”์ƒ ํด๋ž˜์Šค: ์‹ค์ฒด ํด๋ž˜์Šค๊ฐ€ ๊ณตํ†ต์ ์œผ๋กœ ๊ฐ€์ ธ์•ผ ํ•  ํ•„๋“œ, ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ด๋†“์€ ์ถ”์ƒ์ ์ธ ํด๋ž˜์Šค.
์‹ค์ฒด ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„(ํ•„๋“œ, ๋ฉ”์„œ๋“œ)๋ฅผ ํ†ต์ผํ•˜๋Š” ๋ชฉ์ ์ด ์žˆ๋‹ค.
๋ชจ๋“  ์‹ค์ฒด๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์„œ๋“œ์˜ ์‹คํ–‰ ๋‚ด์šฉ์ด ๋™์ผํ•˜๋‹ค๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค์— ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์ถ”์ƒ ๋ฉ”์„œ๋“œ๋Š” abstract ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ๋ถ€๋งŒ ์žˆ๊ณ  ๋ฉ”์„œ๋“œ ์‹คํ–‰ ๋‚ด์šฉ์ธ ์ค‘๊ด„ํ˜ธ {}๊ฐ€ ์—†๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋งํ•œ๋‹ค.

[public | protected ] abstract ๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์„œ๋“œ์ด๋ฆ„(๋งค๊ฐœ๋ณ€์ˆ˜, ...);

์ถ”์ƒ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ overriding [7์žฅ 317์ชฝ] ๋ถ€๋ชจ์—๊ฒŒ์„œ ์ƒ์†๋ฐ›์€ ๋ฉ”์†Œ๋“œ์˜ ๋‚ด์šฉ์ด ์ž์‹ ํด๋ž˜์Šค์— ๋งž์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์ž์‹ ํด๋ž˜์Šค ์—์„œ ๋™์ผํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฐธ๊ณ  ์šฉ์–ด ์˜ค๋ฒ„๋ผ์ด๋”ฉ [7์žฅ 362์ชฝ] ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ. ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ๋ถ€๋งŒ ์žˆ๊ณ  ๋ฉ”์„œ๋“œ ์‹คํ–‰ ๋‚ด์šฉ์ธ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์—†๋‹ค. ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋Š” ์ถ”์ƒ ํด๋ž˜์Šค ์•ˆ์—์„œ๋งŒ ์„ ์–ธ ๊ฐ€๋Šฅํ•จ

์˜ค๋ฒ„๋ผ์ด๋”ฉ overriding [7์žฅ 317์ชฝ] ๋ถ€๋ชจ์—๊ฒŒ์„œ ์ƒ์†๋ฐ›์€ ๋ฉ”์„œ๋“œ์˜ ๋‚ด์šฉ์ด ์ž์‹ ํด๋ž˜์Šค์— ๋งž์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.


Ch. 9 ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค

์ฑ…์˜ ๋ชฉ์ฐจ
09-1 ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค ์†Œ๊ฐœ
09-2 ์ต๋ช… ๊ฐ์ฒด


9.1 ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค ์†Œ๊ฐœ 


ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋‚˜,
ํŠน์ • ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋ฅผ ๋งบ์„ ๊ฒฝ์šฐ์—๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

์ค‘์ฒฉ ํด๋ž˜์Šค(nested class)๋ž€ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์„ ์–ธํ•œ ํด๋ž˜์Šค์ด๋‹ค.

class A{
          //์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„
          int a; //์ธ์Šคํ„ด์Šค ํ•„๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: default)
          void add1(){}          //์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: default)

          //์ •์  ๋ฉค๋ฒ„ 
          public static int c; //์ •์  ํ•„๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: public)
          static void add2(){} //์ •์  ๋ฉ”์„œ๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: default)

}

ํ•ฉ์ณ์„œ
์ธ์Šคํ„ด์Šค ํ•„๋“œ + ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ = ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„(์ธ์Šคํ„ด์Šค ๊ทธ๋ฃน) 
์ •์  ํ•„๋“œ + ์ •์  ๋ฉ”์„œ๋“œ = ์ •์  ๋ฉค๋ฒ„ 

์ธ์Šคํ„ด์Šค, ์ •์  ๋Œ€์‹ ์— ํด๋ž˜์Šค ๋Œ€์ž… ๊ฐ€๋Šฅํ•˜๋‹ค. ex) ์ธ์Šคํ„ด์Šค ํด๋ž˜์Šค ํ•„๋“œ 


9.1 ์ค‘์ฒฉ ํด๋ž˜์Šค (nested class)

• ๋ฉค๋ฒ„ ํด๋ž˜์Šค: ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋กœ์„œ ์„ ์–ธ๋˜๋Š” ์ค‘์ฒฉ ํด๋ž˜์Šค์ด๋‹ค. ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๋ฐ”๊นฅ ๊ฐ์ฒด์˜ ํ•„์š” ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค์™€ ์ •์ (static) ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

• ๋กœ์ปฌ ํด๋ž˜์Šค: ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋˜๋Š” ์ค‘์ฒฉ ํด๋ž˜์Šค

์„ ์–ธ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ์„ ์–ธ ์œ„์น˜ ์„ค๋ช…
๋ฉค๋ฒ„ ํด๋ž˜์Šค 1. ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค class A{
     class B{...}
}
A ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” B ํด๋ž˜์Šค
2. ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค class A{
     static class B{...}
}
A ํด๋ž˜์Šค๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” B ํด๋ž˜์Šค
3. ๋กœ์ปฌ ํด๋ž˜์Šค class A{
     void method(){
          class B{...}
     }
}
method()๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” B ํด๋ž˜์Šค

1) ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค

์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” static ํ‚ค์›Œ๋“œ ์—†์ด ์ค‘์ฒฉ ์„ ์–ธ๋œ ํด๋ž˜์Šค์ด๋‹ค. ์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋งŒ ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ •์  ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค.

class A{
          class B{//์ธ์Šคํ„ด์Šค ํด๋ž˜์Šค (์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
          //์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ 
          int a;               //์ธ์Šคํ„ด์Šค ํ•„๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: default)
          void add1(){}  //์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: default)
          }
} //A ํด๋ž˜์Šค ๋

A ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ B ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋จผ์ € A ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  B ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. A ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ์ƒ์„ฑ์ž ๋ฐ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์—์„œ๋Š” ์ผ๋ฐ˜ ํด๋ž˜์Šค์ฒ˜๋Ÿผ B ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

A ํด๋ž˜์Šค ์™ธ๋ถ€

A a = new A();
A.B b = a.new B();
b.field1 = 3;
b.method1();

A ํด๋ž˜์Šค ๋‚ด๋ถ€

class A{
	class B {...}
    
    void methodA(){
    B b = new B();
    b.field = 3;
    b.method1(0;
    }
}

2) ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค

์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” static ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ํด๋ž˜์Šค์ด๋‹ค. ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

class A{
//**์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค**
static class C{
	C(){} //์ƒ์„ฑ์ž
    int field1; //์ธ์Šคํ„ด์Šค ํ•„๋“œ
    static int field2; //์ •์  ํ•„๋“œ
    void method1(){} //์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
    static void method2(){} //์ •์  ๋ฉ”์„œ๋“œ
}
{
          static class B{//์ •์  ํด๋ž˜์Šค(์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
          //์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„
          int a;           
}

 

A ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค C์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” A ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  C ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

A.C c = new A.C();
c.field1 = 3; //์ธ์Šคํ„ด์Šค ํ•„๋“œ ์‚ฌ์šฉ
c.method1(); //์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ

A.C.field2 = 3; //์ •์  ํ•„๋“œ ์‚ฌ์šฉ
A.C.method2(); //์ •์  ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ

3) ๋กœ์ปฌ(local) ํด๋ž˜์Šค

๋กœ์ปฌ ํด๋ž˜์Šค: ์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์„œ๋“œ ๋ธ”๋ก ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ์ค‘์ฒฉ ํด๋ž˜์Šค์ด๋‹ค.

์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ๋„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์„ ๋กœ์ปฌ(local) ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค.

์ ‘๊ทผ ์ œํ•œ์ž(public, private) ๋ฐ static์„ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค. ๋กœ์ปฌ ํด๋ž˜์Šค๋Š” ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์ ‘๊ทผ์„ ์ œํ•œํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋กœ์ปฌ ํด๋ž˜์Šค ๋‚ด๋ถ€์—๋Š” ์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋งŒ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๊ณ  ์ •์  ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค.

class A{
          static class B{//์ •์  ํด๋ž˜์Šค (์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
          //์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ 
          int a;               //์ธ์Šคํ„ด์Šค ํ•„๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: default)
          void add1(){}  //์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: default)

          int a = 10; //์ง€์—ญ ๋ณ€์ˆ˜(๋กœ์ปฌ ๋ณ€์ˆ˜)
          class D{ //๋กœ์ปฌ ํด๋ž˜์Šค
                    //ํ•„๋“œ
                    //์ƒ์„ฑ์ž
                    //๋ฉ”์„œ๋“œ
                    }
          }          //์ •์  ๋ฉ”์„œ๋“œ(์ ‘๊ทผ ์ œํ•œ์ž: default)
     }
} //A ํด๋ž˜์Šค ๋

 

์˜ˆ์ œ 1) ์ค‘์ฒฉ ํด๋ž˜์Šค 

package ch9;

//**๋ฐ”๊นฅ ํด๋ž˜์Šค**
public class A { //์™ธ๋ถ€ ํด๋ž˜์Šค
	//์ƒ์„ฑ์ž
	A(){System.out.println("A ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ");} // ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž(๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž)
	
	//ํ•„๋“œ
	//**์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค**
	class B{// ๋‚ด๋ถ€ ํด๋ž˜์Šค(์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
		//์ƒ์„ฑ์ž
		B(){System.out.println("B ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ");} //๋‚ด๋ถ€ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž(๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž)
		//ํ•„๋“œ
		int field1;
		//๋ฉ”์„œ๋“œ
		void method1(){}
	}
	//**์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค**
	static class C{
		//์ƒ์„ฑ์ž
		C(){System.out.println("C ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ");}
		//ํ•„๋“œ
		int field1;
		static int field2;
		//๋ฉ”์„œ๋“œ
		void method1() {}
		static void method2(){}
	}
	
	void method() {
		//**๋กœ์ปฌ ํด๋ž˜์Šค**
		class D{
			D(){System.out.println("D ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ");}
			int field1;
			void method1() {}
		}
		D d = new D();
		d.field1 = 3;
		d.method1();
		}
	}

์˜ˆ์ œ 2) ์ค‘์ฒฉ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ

package ch9;

public class Main {

	public static void main(String[] args) {
		//์™ธ๋ถ€ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ(A ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ)
		A a = new A();
		
		//์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ(B ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ)
		A.B b = a.new B();
		b.field1 = 3;
		b.method1();
		
		//์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ(C ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ)
		A.C c = new A.C();
		c.method1();
		A.C.field2 = 3;
		A.C.method2();
		
		//๋กœ์ปฌ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
		a.method();
	}
}

๊ฒฐ๊ณผ)

A ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ
B ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ
C ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ
D ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋จ

9.2 ์ค‘์ฒฉ ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ p. 411

๋ฉค๋ฒ„ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ๋•Œ ์ œํ•œ์ด ๋”ฐ๋ฅธ๋‹ค.
๋˜ํ•œ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋‚˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋ฅผ ๋กœ์ปฌ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•  ๋•Œ๋„ ์ œํ•œ์ด ๋”ฐ๋ฅธ๋‹ค.


1) ๋ฐ”๊นฅ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์—์„œ ์‚ฌ์šฉ ์ œํ•œ (9.2 ์ค‘์ฒฉ ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ)

๋ฐ”๊นฅ ํด๋ž˜์Šค์—์„œ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ œํ•œ์ด ์žˆ๋‹ค. 

์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค(B)๋Š” ์ •์  ํ•„๋“œ(field3)์˜ ์ดˆ๊ธฐ๊ฐ’์ด๋‚˜ ์ •์  ๋ฉ”์„œ๋“œ(method2())์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค. 
๋ฐ˜๋ฉด ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค(C)๋Š” ๋ชจ๋“  ํ•„๋“œ์˜ ์ดˆ๊ธฐ๊ฐ’์ด๋‚˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

public class A { //๋ฐ”๊นฅ ํด๋ž˜์Šค
	//ํ•„๋“œ
	//์ธ์Šคํ„ด์Šค ํ•„๋“œ
	B field1 = new B();
	C field2 = new C();
	
	//์ •์  ํ•„๋“œ ์ดˆ๊ธฐํ™”
	//static B field3 = new B(); //(X)
	static C field4 = new C();
	
	//๋ฉ”์„œ๋“œ
	//์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
	void method1() {
		B var1 = new B();
		C var2 = new C();
	}
	
	//์ •์  ๋ฉ”์„œ๋“œ
	static void method2() {
		//B var1 = new B();(X)
		C var2 = new C();
	}
	
	//์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค
	class B{}
	
	//์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค
	static class C{}
}

2) ๋ฉค๋ฒ„ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ ์ œํ•œ (9.2 ์ค‘์ฒฉ ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ)

๋ฉค๋ฒ„ ํด๋ž˜์Šค๊ฐ€ ์ธ์Šคํ„ด์Šค ๋˜๋Š” ์ •์ ์œผ๋กœ ์„ ์–ธ๋จ์— ๋”ฐ๋ผ ๋ฉค๋ฒ„ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ๋•Œ์—๋„ ์ œํ•œ์ด ๋”ฐ๋ฅธ๋‹ค. 

์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค(B) ์•ˆ์—์„œ๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ํ•„๋“œ์™€ ๋ชจ๋“  ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค(C) ์•ˆ์—์„œ๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ์ •์  ํ•„๋“œ(field2)์™€ ๋ฉ”์„œ๋“œ(method2())์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
์ธ์Šคํ„ด์Šค ํ•„๋“œ(field1)์™€ ๋ฉ”์„œ๋“œ(method1())์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. 

์˜ˆ์‹œ)

public class A {//๋ฐ”๊นฅ ํด๋ž˜์Šค
	//๋ฐ”๊นฅ ํด๋ž˜์Šค ํ•„๋“œ
	int field1;
	//๋ฐ”๊นฅ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ
	void method1() {}
	//๋ฐ”๊นฅ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ(์ •์ )
	static int field2;
	//๋ฐ”๊นฅ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ(์ •์ )
	static void method2() {}
	
	class B{	//๋‚ด๋ถ€ ํด๋ž˜์Šค("์ธ์Šคํ„ด์Šค" ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
		// ๋ฉ”์„œ๋“œ
		void method() {
			//*๋ชจ๋“  ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
			field1 = 10;
			method1();
			
			field2 = 10;
			method2();
		}
	}//๋‚ด๋ถ€ ํด๋ž˜์Šค ๋
	
	static class C {	//๋‚ด๋ถ€ ํด๋ž˜์Šค("์ •์ " ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
		//๋ฉ”์„œ๋“œ
		void method(){
			//*์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
			//field1 = 10;
			//method1();
			
			//*์ •์  ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
			field2 = 10;
			method2();
		}
	}//๋ฐ”๊นฅ ํด๋ž˜์Šค ๋
}

3) ๋กœ์ปฌ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ ์ œํ•œ p. 414 (9.2 ์ค‘์ฒฉ ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ)

๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋‚˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋ฅผ ๋กœ์ปฌ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ์ œํ•œ์ด ์žˆ๋‹ค.
๋กœ์ปฌ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋Š” ๋ฉ”์„œ๋“œ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ์—†์–ด์ง€๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด์ง€๋งŒ, ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ๊ณ„์† ์‹คํ–‰ ์ƒํƒœ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. 
ex) ๋กœ์ปฌ ์Šค๋ ˆ๋“œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ์™€ ๋‹ค๋ฅด๋ฏ€๋กœ ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„์—๋„ ๋กœ์ปฌ ์Šค๋ ˆ๋“œ ๊ฐ์ฒด๋Š” ์‹คํ–‰ ์ƒํƒœ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. (Ch. 12 '์Šค๋ ˆ๋“œ'์—์„œ ๋‹ค๋ฃฌ๋‹ค.) 

์ž๋ฐ”๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ปดํŒŒ์ผ ์‹œ ๋กœ์ปฌ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๋‚˜ ๋กœ์ปฌ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋กœ์ปฌ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๋ณต์‚ฌํ•ด ๋‘๊ณ  ์‚ฌ์šฉํ•œ๋‹ค. 
๊ทธ๋ฆฌ๊ณ  ๋งค๊ฐœ ๋ณ€์ˆ˜๋‚˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๊ฐ€ ์ˆ˜์ •๋˜์–ด ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋กœ์ปฌ ํด๋ž˜์Šค์— ๋ณต์‚ฌํ•ด ๋‘” ๊ฐ’๊ณผ ๋‹ค๋ผ์ง€๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋‚˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋ฅผ final๋กœ ์„ ์–ธํ•  ๊ฒƒ์„ ์š”๊ตฌํ•œ๋‹ค.

์ž๋ฐ” 7 ์ด์ „๊ณผ ๋‹ฌ๋ฆฌ ์ž๋ฐ” 8๋ถ€ํ„ฐ๋Š” final ํ‚ค์›Œ๋“œ ์—†์ด ์„ ์–ธ๋œ ๋งค๊ฐœ ๋ณ€์ˆ˜์™€ ๋กœ์ปฌ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. final ์„ ์–ธ์„ ํ•˜์ง€ ์•Š์•„๋„ ๊ฐ’์ด ์ˆ˜์ •๋  ์ˆ˜ ์—†๋„๋ก final์˜ ํŠน์„ฑ์„ ๋ถ€์—ฌํ•œ๋‹ค. 

์˜ˆ์ œ) ๋กœ์ปฌ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ ์ œํ•œ

public class Outter {
	//์ž๋ฐ” 7 ์ด์ „
	public static method1(final int arg) { //๋ฐ”๊นฅ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
		final int localVariable = 1; // ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ณ€์ˆ˜(๋กœ์ปฌ ๋ณ€์ˆ˜)
		//arg = 100; (X)
		//localVariable = 100; (X)
		
		class Inner{ //๋‚ด๋ถ€ ํด๋ž˜์Šค
			public void method(){
				int result = arg + localVariable;
			}
		}
	}
	
	//์ž๋ฐ” 8 ์ดํ›„
	public static method2(int arg) { //๋ฐ”๊นฅ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ
		int localVariable = 1; // ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ณ€์ˆ˜(๋กœ์ปฌ ๋ณ€์ˆ˜)
		//arg = 100; (X)
		//localVariable = 100; (X)
		
		class Inner{ //๋‚ด๋ถ€ ํด๋ž˜์Šค
			public void method(){
				int result = arg + localVariable;
			}
		}
	}
}

4) ์ค‘์ฒฉ ํด๋ž˜์Šค์—์„œ ๋ฐ”๊นฅ ํด๋ž˜์Šค ์ฐธ์กฐ ์–ป๊ธฐ p. 416 (9.2 ์ค‘์ฒฉ ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œํ•œ)

์˜ˆ์ œ 1) ์ค‘์ฒฉ ํด๋ž˜์Šค์—์„œ ๋ฐ”๊นฅ ํด๋ž˜์Šค ์ฐธ์กฐ ์–ป๊ธฐ

public class Outter {//๋ฐ”๊นฅ ํด๋ž˜์Šค
	//ํ•„๋“œ 
	String field = "Outter-field";
	//์ƒ์„ฑ์ž
	//Outter(){}
	//๋ฉ”์„œ๋“œ
	void method() {
		System.out.println("Outter-field");
	}
	
	class Nested{//๋‚ด๋ถ€ ํด๋ž˜์Šค(์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
		//ํ•„๋“œ
		//this.field๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด ์žˆ๋Š” field๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค. 
		String field = "Nested-field";
		//์ƒ์„ฑ์ž
		//๋ฉ”์„œ๋“œ
		void method() {
			System.out.println("Nested-method");
		}
		
		void print() {
			//์ค‘์ฒฉ ๊ฐ์ฒด ์ฐธ์กฐ
			System.out.println(this.field);
			this.method();
			
			//๋ฐ”๊นฅ ๊ฐ์ฒด ์ฐธ์กฐ
			System.out.println(Outter.this.field);//Outter์„ ๋ถ™์—ฌ์„œ ๋ฐ”๊นฅ์ชฝ field์— ์ ‘๊ทผ 
			Outter.this.method();
		}	
	}
}

์˜ˆ์ œ 2) ์‹คํ–‰ ํด๋ž˜์Šค

public class OutterExample {
	public static void main(String[] args) {
		//๋ฐ”๊นฅ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ
		Outter outter = new Outter();
		//๋‚ด๋ถ€ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ
		//๋ฐ”๊นฅํด๋ž˜์Šค.๋‚ด๋ถ€ํด๋ž˜์Šค ์ฐธ์กฐ๋ณ€์ˆ˜๋ช… = ๋ฐ”๊นฅ ํด๋ž˜์Šค ์ฐธ์กฐ๋ณ€์ˆ˜.new ์ฐธ์กฐ๋ณ€์ˆ˜๋ช…
		Outter.Nested nested = outter.new Nested();
		nested.print();
	}
}

9.3 ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค p. 417

์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋กœ ์„ ์–ธ๋œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. 
์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์„ ์–ธํ•˜๋Š” ์ด์œ ๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์™€ ๊ธด๋ฐ€ํ•œ ๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋‹ค. 

์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ •์ (static) ๋ฉค๋ฒ„ ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฃผ๋กœ ์ •์  ๋ฉค๋ฒ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ UI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋ชฉ์ ์œผ๋กœ ๋งŽ์ด ํ™œ์šฉ๋œ๋‹ค.

์˜ˆ์ œ 1) ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค

package ch9_2_4;
//[1]
public class Button {//๋ฐ”๊นฅ ํด๋ž˜์Šค
	//ํƒ€์ž…
	//ํƒ€์ž…			ํ•„๋“œ๋ช…
	OnClickListener listener; //์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž… ํ•„๋“œ
	
	//๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๋‹คํ˜•์„ฑ
	void setOnClickListener(OnClickListener listener) {
		this.listener = listener;
	}
	
	//๋ฉ”์„œ๋“œ
	//๊ตฌํ˜„ ๊ฐ์ฒด์˜ onClick() ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
	void touch() {
		listener.onClick();
	}
	
	//์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค
	static interface OnClickListener{//๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค(์ •์ )
		//public static (์ƒ๋žต๋จ)
		void onClick();//"์ถ”์ƒ๋ฉ”์„œ๋“œ ์„ ์–ธ"๋งŒ ์„ ์–ธ ๊ฐ€๋Šฅ
	}
}

์˜ˆ์ œ 2) ๊ตฌํ˜„ ํด๋ž˜์Šค

package ch9_2_4;
//[2]
public class CallListener implements Button.OnClickListener{
	@Override
	public void onClick() {
		System.out.println("์ „ํ™”๋ฅผ ๊ฒ๋‹ˆ๋‹ค.");
	}
}

์˜ˆ์ œ 3) ๊ตฌํ˜„ ํด๋ž˜์Šค

package ch9_2_4;
//[3]
public class MessageListener implements Button.OnClickListener{
	@Override
	public void onClick() {
		System.out.println("๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.");
	}
}

์˜ˆ์ œ 4) ๋ฒ„ํŠผ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

package ch9_2_4;
//[4]
public class ButtonExample {
	public static void main(String[] args) {
		Button btn = new Button();
		
		btn.setOnClickListener(new CallListener());
		btn.touch();
		
		btn.setOnClickListener(new MessageListener());
		btn.touch();
	}
}

๊ฒฐ๊ณผ)

์ „ํ™”๋ฅผ ๊ฒ๋‹ˆ๋‹ค.
๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

Q3) Car ํด๋ž˜์Šค ๋‚ด๋ถ€์— Tire์™€ Engine์ด ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค.
๋ฐ”๊นฅ ํด๋ž˜์Šค(NestedClassExample)์—์„œ ๋ฉค๋ฒ„ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ. 

์˜ˆ์ œ 1)

public class Car {//์™ธ๋ถ€ ํด๋ž˜์Šค
	class Tire{} //๋‚ด๋ถ€ ํด๋ž˜์Šค(์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
	static class Engine{} //๋‚ด๋ถ€ ํด๋ž˜์Šค(์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
}


์˜ˆ์ œ 2)

public class NestedClassExample {
	public static void main(String[] args) {
		Car myCar = new Car();
		
		Car.Tire tire = myCar.new Tire();
				
		Car.Engine engine = new Car.Engine();
	}
}

 


๋งˆ๋ฌด๋ฆฌ
4๊ฐ€์ง€ ํ‚ค์›Œ๋“œ๋กœ ๋๋‚ด๋Š” ํ•ต์‹ฌ ํฌ์ธํŠธ p. 420


1) ์ค‘์ฒฉ ํด๋ž˜์Šค: ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์„ ์–ธํ•œ ํด๋ž˜์Šค์ด๋‹ค. ์ค‘์ฒฉ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‘ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋“ค์„ ์„œ๋กœ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , ์™ธ๋ถ€์—๋Š” ๋ถˆํ•„์š”ํ•œ ๊ด€๊ณ„ ํด๋ž˜์Šค๋ฅผ ๊ฐ์ถค์œผ๋กœ์จ ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

2) ๋ฉค๋ฒ„ ํด๋ž˜์Šค: ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋กœ์„œ ์„ ์–ธ๋˜๋Š” ์ค‘์ฒฉ ํด๋ž˜์Šค์ด๋‹ค. ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๋ฐ”๊นฅ ๊ฐ์ฒด์˜ ํ•„์š” ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค์™€ ์ •์ (static) ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

3) ๋กœ์ปฌ ํด๋ž˜์Šค: ์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์„œ๋“œ ๋ธ”๋ก ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ์ค‘์ฒฉ ํด๋ž˜์Šค์ด๋‹ค.

4) ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค: ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋กœ ์„ ์–ธ๋œ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ •์ (static) ๋ฉค๋ฒ„ ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฃผ๋กœ ์ •์  ๋ฉค๋ฒ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ UI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋ชฉ์ ์œผ๋กœ ๋งŽ์ด ํ™œ์šฉ๋œ๋‹ค.


ํ™•์ธ ๋ฌธ์ œ
Q1) 
1. ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ์–ด์•ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (O)
2. ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์—†์–ด๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. (O)

class A{
		int a; //์ธ์Šคํ„ด์Šค ํ•„๋“œ
        static int b; //์ •์  ํ•„๋“œ
}
class ATest{
public static void main(String[] args){
	//์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค
    //๋ฐ”๊นฅ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ
	A a = new A();
    //๋ฐ”๊นฅ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ
    A.B b = a.new B();
    
    //์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ
    A.B b = new A.B();
	}
}

3. ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค ๋‚ด๋ถ€์—๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (O) (class B)
4. ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค ๋‚ด๋ถ€์—๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (X) (static class C)

Q2) 
1. ๋กœ์ปฌ ํด๋ž˜์Šค๋Š” ์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ํด๋ž˜์Šค๋ฅผ ๋งํ•œ๋‹ค. (O)
2. ๋กœ์ปฌ ํด๋ž˜์Šค๋„ ํ•„๋“œ์™€ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. (O)
3. ๋กœ์ปฌ ํด๋ž˜์Šค๋Š” static ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ •์  ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. (X) ์•ˆ ๋œ๋‹ค. 
4. final ํŠน์„ฑ์„ ๊ฐ€์ง„ ๋งค๊ฐœ ๋ณ€์ˆ˜๋‚˜ ๋กœ์ปฌ ๋ณ€์ˆ˜๋งŒ ๋กœ์ปฌ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (O) p. 414 ์ฐธ๊ณ  

class A{	//์™ธ๋ถ€ ํด๋ž˜์Šค
		int x; //์ธ์Šคํ„ด์Šค ํ•„๋“œ
        static int y; //์ •์  ํ•„๋“œ
        
        class B{ //๋‚ด๋ถ€ ํด๋ž˜์Šค(์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
        }
        
        static class C{ //๋‚ด๋ถ€ ํด๋ž˜์Šค(์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค)
		}
        
        void add(){		//๋ฆฌํ„ด์ด ์—†๋Š” ๋ฉ”์„œ๋“œ
				int z; //add ๋ฉ”์„œ๋“œ ์•ˆ์— ์„ ์–ธํ–ˆ์œผ๋ฏ€๋กœ z๋ณ€์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜(๋กœ์ปฌ๋ณ€์ˆ˜)
                class E{ //add ๋ฉ”์„œ๋“œ ์•ˆ์— ์„ ์–ธํ–ˆ์œผ๋ฏ€๋กœ Eํด๋ž˜์Šค๋Š” ์ง€์—ญํด๋ž˜์Šค(๋กœ์ปฌํด๋ž˜์Šค)
                		//ํ•„๋“œ
                        //์ƒ์„ฑ์ž
                        //๋ฉ”์„œ๋“œ
                }
}

class D{
	public static void main(String[] args){
			//Aํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•ด์„œ ๊ฐ์ฒด ์ƒ์„ฑ
            A a = new A();
            //์ธ์Šคํ„ด์Šค ํ•„๋“œ x์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜ a๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•œ๋‹ค.
            a.x = 10;
			//์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค B์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค A๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•œ๋‹ค.
            A.B b = a.new B();
			//์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค C์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ๋ฐ”๊นฅํด๋ž˜์Šค A์—†์ด ์ ‘๊ทผํ•œ๋‹ค.
            A.C c = new A.C();
	}
}

Q4) p. 415 ์ฐธ๊ณ 
nickName์€ final ํŠน์„ฑ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— String nickName = chatID;๋ฅผ ๋„ฃ๋Š”๋‹ค.

public class Chatting {//์™ธ๋ถ€ ํด๋ž˜์Šค 
	
	void startChat(String chatID) {//์™ธ๋ถ€ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ
//		String nickName = null;
//		nickName = chatId;
		
		class Chat{//๋กœ์ปฌ ํด๋ž˜์Šค
			public void start() {
				while(true) {
					String nickName = chatID;
					String inputData = "์•ˆ๋…•ํ•˜์„ธ์š”";
					String message = "[" + nickName + "]" + inputData;
					sendMessage(message);
				}
			}
			
			void sendMessage(String message) {
			}
		}//Chat ๋๋‚จ 
		
		Chat chat = new Chat();
		chat.start();
	}//starChat ๋๋‚จ 
}//Chatting ๋๋‚จ

Q5) 
์˜ˆ์ œ 1)

public class CheckBox {
	OnSelectListener listener;
	
	void setOnSelectListener(OnSelectListener listener) {
		this.listener = listener;
	}
	
	void select() {
		listener.onSelect();
	}
	
	static interface OnSelectListener{
		//public static void onSelect();
		void onSelect();//์ถ”์ƒ ๋ฉ”์„œ๋“œ
	}
}

์˜ˆ์ œ 2)

public class CheckBoxExample {
	public static void main(String[] args) {
		CheckBox checkBox = new CheckBox();
		checkBox.setOnSelectListener(new BackgroundChangeListener());
		checkBox.select();
	}
}

์˜ˆ์ œ 3)

public class BackgroundChangeListener implements CheckBox.OnSelectListener{
	public void onSelect() {
		System.out.println("๋ฐฐ๊ฒฝ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.");
	}
}

 


Ch 9.2 ์ต๋ช… ๊ฐ์ฒด

2๊ฐ€์ง€ ํ‚ค์›Œ๋“œ๋กœ ๋๋‚ด๋Š” ํ•ต์‹ฌ ํฌ์ธํŠธ p. 437

1) ์ต๋ช… ์ž์‹ ๊ฐ์ฒด: ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ์˜ค๋กœ์ง€ ํŠน์ • ์œ„์น˜์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ๋ผ๋ฉด ์ž์‹ ํด๋ž˜์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์€ ๊ท€์ฐฎ์€ ์ž‘์—…์ด ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ์ต๋ช… ์ž์‹ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
์ต๋ช… ์ž์‹ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ถ€๋ชจํด๋ž˜์Šค [ํ•„๋“œ|๋ณ€์ˆ˜] = new ๋ถ€๋ชจํด๋ž˜์Šค(๋งค๊ฐœ๊ฐ’, ...){
	//ํ•„๋“œ
    //๋ฉ”์„œ๋“œ
};



2) ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด: ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ์˜ค๋กœ์ง€ ํŠน์ • ์œ„์น˜์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ๋ผ๋ฉด ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์€ ๊ท€์ฐฎ์€ ์ž‘์—…์ด๋‹ค. ์ด ๊ฒฝ์šฐ ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 
์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

์ธํ„ฐํŽ˜์ด์Šค [ํ•„๋“œ|๋ณ€์ˆ˜] = new ์ธํ„ฐํŽ˜์ด์Šค(){
	//์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธ๋œ ์ถ”์ƒ ๋ฉ”์„œ๋“œ์˜ ์‹ค์ฒด ๋ฉ”์„œ๋“œ ์„ ์–ธ
    //ํ•„๋“œ
    //๋ฉ”์„œ๋“œ
};

728x90
๋ฐ˜์‘ํ˜•
Comments