์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[39] 230222 Java Ch. 9 ์ค์ฒฉ ํด๋์ค์ ์ค์ฒฉ ์ธํฐํ์ด์ค: 1. ์ค์ฒฉ ํด๋์ค์ ์ค์ฒฉ ์ธํฐํ์ด์ค ์๊ฐ, 2. ์ต๋ช ๊ฐ์ฒด [K-๋์งํธ ํธ๋ ์ด๋ 39์ผ] ๋ณธ๋ฌธ
[39] 230222 Java Ch. 9 ์ค์ฒฉ ํด๋์ค์ ์ค์ฒฉ ์ธํฐํ์ด์ค: 1. ์ค์ฒฉ ํด๋์ค์ ์ค์ฒฉ ์ธํฐํ์ด์ค ์๊ฐ, 2. ์ต๋ช ๊ฐ์ฒด [K-๋์งํธ ํธ๋ ์ด๋ 39์ผ]
yjyuwisely 2023. 2. 22. 12:50230222 Wed 39th class
Ch. 9 ์ค์ฒฉ ํด๋์ค์ ์ค์ฒฉ ์ธํฐํ์ด์ค
Ch. 10 ์์ธ ์ฒ๋ฆฌ (์ฃผ์ ๋ณ๋ก ๋ฌถ๊ธฐ ์ํด ์๊ธ๋ก ๊ธ ๋ด์ฉ ์ฎ๊น.)
์ง๋: p. 406 ~ (๊ต์ฌ: ํผ์ ๊ณต๋ถํ๋ ์๋ฐ, ์ ์: ์ ์ฉ๊ถ)
ํ๋น๋ฏธ๋์ด_ํผ๊ณต์_์ฉ์ด์ง.pdf
์ฉ์ด ์ฐธ๊ณ
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
์ง๋ ์์ ๋ ๋ฐฐ์ด ๊ฒ ์ค ๋ค์ ๊ธฐ์ตํ ๊ฒ
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
์์ค ํ์ผ: ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ํ์ผ
์์ค(source): ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ๋ด์ฉ
์ปดํ์ผ: ์์ค ํ์ผ์ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ ๊ฒ์ด๋ค. (์ด ์ญํ ๋ด๋นํ๋ ์ํํธ์จ์ด = ์ปดํ์ผ๋ฌ)
์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋๋ก 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ๊ณผ์
์ธ์คํด์ค(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 ์ธํฐํ์ด์ค(){
//์ธํฐํ์ด์ค์ ์ ์ธ๋ ์ถ์ ๋ฉ์๋์ ์ค์ฒด ๋ฉ์๋ ์ ์ธ
//ํ๋
//๋ฉ์๋
};