Java๋ ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ค.
ํ๋ก๊ทธ๋จ์ ํด๋์ค → ๊ฐ์ฒด ์์ฑ → ๊ฐ์ฒด ๊ฐ ์ํธ์์ฉ ๊ตฌ์กฐ๋ก ๋์ํ๋ค.
1. ํด๋์ค์ ๊ธฐ๋ณธ ์ ์
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ค๊ณ๋๋ค.
์์ฑ(๋ฐ์ดํฐ)๊ณผ ๊ธฐ๋ฅ(๋์)์ ํ๋๋ก ๋ฌถ์ด ์ ์ํ๋ค.
class Student {
String name; // ์์ฑ
int grade;
void study() { // ๊ธฐ๋ฅ
System.out.println("๊ณต๋ถํ๋ค.");
}
}
ํด๋์ค๋ ์ค๊ณ๋์ผ ๋ฟ, ์์ง ๋ฉ๋ชจ๋ฆฌ์ ์ค์ฒด๊ฐ ์๋ค.
2. ํด๋์ค์ ์ธ์คํด์ค
- ๊ฐ์ฒด(Object) : ํด๋์ค ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ ์ค์ฒด
- ์ธ์คํด์ค(Instance) : ํน์ ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด
Student s1 = new Student();
- Student → ํด๋์ค
- s1 → ์ฐธ์กฐ ๋ณ์
- new Student() → ์ธ์คํด์ค ์์ฑ
ํด๋์ค๋ ๊ณต๋ ์ค๊ณ๋, ์ธ์คํด์ค๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๊ฐ๋ณ ๊ฐ์ฒด๋ค.
3. ์ฐธ์กฐ ์๋ฃํ
ํด๋์ค๋ ๋ชจ๋ ์ฐธ์กฐ ์๋ฃํ์ด๋ค.
Student s1;
์ด ๋ณ์์๋ ๊ฐ์ฒด ๊ทธ ์์ฒด๊ฐ ์๋๋ผ, ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ ๊ฐ์ด ์ ์ฅ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
- Stack → ์ฐธ์กฐ ๋ณ์
- Heap → ์ค์ ๊ฐ์ฒด
4. ๋ฉ์๋์ ์คํ ๋ฉ๋ชจ๋ฆฌ
๋ฉ์๋๋ ๊ฐ์ฒด์ ํ๋์ ์ ์ํ๋ค.
void study() {
int time = 2;
}
๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด,
- ์คํ ๋ฉ๋ชจ๋ฆฌ์ ํธ์ถ ์ ๋ณด ์ ์ฅ
- ์ง์ญ ๋ณ์ ์์ฑ
- ์คํ ์ข ๋ฃ ํ ์คํ์์ ์ ๊ฑฐ
์ฆ, ๋ฉ์๋๋ ํธ์ถ๋ ๋๋ง๋ค Stack Frame์ด ์์ฑ๋๋ค.
5. ์์ฑ์(Constructor)
๊ฐ์ฒด ์์ฑ ์ ์ด๊ธฐํ๋ฅผ ๋ด๋นํ๋ค.
class Student {
String name;
Student(String name) {
this.name = name;
}
}
ํน์ง
- ํด๋์ค ์ด๋ฆ๊ณผ ๋์ผ
- ๋ฐํ ํ์ ์์
- ๊ฐ์ฒด ์์ฑ ์ ์๋ ํธ์ถ
6. this ์์ฝ์ด
ํ์ฌ ๊ฐ์ฒด ์์ ์ ๊ฐ๋ฆฌํจ๋ค.
this.name = name;
์ฉ๋
- ํ๋์ ๋งค๊ฐ ๋ณ์ ๊ตฌ๋ถ
- ์๊ธฐ ์์ ์ ๋ฉ์๋ ํธ์ถ
- ์์ฑ์ ๊ฐ ํธ์ถ(this())
7. ์ ๋ณด ์๋(์บก์ํ)
๊ฐ์ฒด ๋ด๋ถ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์์ ์ง์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ๋ง๋ ๊ฒ
class Student {
private int grade;
public int getGrade() {
return grade;
}
}
- private → ์ธ๋ถ ์ ๊ทผ ์ฐจ๋จ
- public ๋ฉ์๋๋ก ๊ฐ์ ์ ๊ทผ
๋ชฉ์
- ๋ฐ์ดํฐ ๋ณดํธ
- ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ ์ฉ์ด
- ์ ์ง๋ณด์ ์ฉ์ด
8. ๊ฐ์ฒด ๊ฐ ํ๋ ฅ
๊ฐ์ฒด๋ ๋จ๋ ์ผ๋ก ์กด์ฌํ์ง ์๋๋ค.
๋ค๋ฅธ ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ ํธ์ถํ๋ฉฐ ํ๋ ฅํ๋ค.
class Order {
Payment payment;
void process() {
payment.pay();
}
}
๊ฐ์ฒด๋ ๋ฉ์ธ์ง(๋ฉ์๋ ํธ์ถ)๋ฅผ ํตํด ํ๋ ฅํ๋ค.
9. static ๋ณ์์ static ๋ฉ์๋
static์ ํด๋์ค ๋ ๋ฒจ์์ ๊ณต์ ๋๋ ์์๋ค.
class Student {
static int count = 0;
Student() {
count++;
}
}
ํน์ง
- ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณต์
- Heap์ด ์๋ Method Area์ ์ ์ฅ
- ๊ฐ์ฒด ์์ฑ ์์ด ์ ๊ทผ ๊ฐ๋ฅ
Student.count;
10. ๋ณ์์ ์ ํจ ๋ฒ์(Scope)
๋ณ์๋ ์ ์ธ๋ ์์น์ ๋ฐ๋ผ ์ฌ์ฉ ๋ฒ์๊ฐ ๋ค๋ฅด๋ค.
1) ์ง์ญ ๋ณ์
- ๋ฉ์๋ ๋ด๋ถ
- ์คํ์ ์ ์ฅ
- ์ด๊ธฐํ ํ์
2) ์ธ์คํด์ค ๋ณ์
- ํด๋์ค ๋ด๋ถ
- Heap์ ์ ์ฅ
- ๊ฐ์ฒด๋ง๋ค ๋ณ๋ ์กด์ฌ
3) ํด๋์ค ๋ณ์(static)
- ํด๋์ค ๋ ๋ฒจ
- ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณต์
'Back-End > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 07. ์์๊ณผ ๋คํ์ฑ (0) | 2026.02.11 |
|---|---|
| 06. ๋ฐฐ์ด๊ณผ ArrayList (0) | 2026.02.11 |
| 04. ์ ์ด ํ๋ฆ(Control Flow) (0) | 2026.02.11 |
| 03. ์ฐ์ฐ์ (0) | 2026.02.11 |
| 02. ๋ณ์์ ์๋ฃํ (0) | 2026.02.11 |