๊ฐ์ฒด / ์ธ์คํด์ค
ํด๋์ค์ ์ํด์ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ผ๊ณ ๋ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฒด์ ์ธ์คํด์ค์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น? Animal cat = new Animal() ์ด๋ ๊ฒ ๋ง๋ค์ด์ง cat์ ๊ฐ์ฒด์ด๋ค. ๊ทธ๋ฆฌ๊ณ cat์ด๋ผ๋ ๊ฐ์ฒด๋ Animal์ ์ธ์คํด์ค์ด๋ค. ์ธ์คํด์ค๋ผ๋ ๋ง์ ํน์ ๊ฐ์ฒด(์ฌ๊ธฐ์๋ cat)๊ฐ ์ด๋ค ํด๋์ค(์ฌ๊ธฐ์๋ Animal)์ ๊ฐ์ฒด์ธ์ง๋ฅผ ๊ด๊ณ ์์ฃผ๋ก ์ค๋ช
ํ ๋ ์ฌ์ฉ๋๋ค. ์ฆ, ‘cat์ ์ธ์คํด์ค’๋ณด๋ค๋ ‘cat์ ๊ฐ์ฒด’๋ผ๋ ํํ์ด, ‘cat์ Animal์ ๊ฐ์ฒด’๋ณด๋ค๋ ‘cat์ Animal์ ์ธ์คํด์ค’๋ผ๋ ํํ์ด ํจ์ฌ ์ ์ด์ธ๋ฆฐ๋ค.
- ๊ฐ์ฒด ๋ณ์ = ์ธ์คํด์ค ๋ณ์ = ๋ฉค๋ฒ ๋ณ์ = ์์ฑ
static๋ณ์ = ํด๋์ค ๋ณ์- ๋ฉค๋ฒ: ํด๋์ค ๋ด๋ถ์ ์ ์ธ๋ ๋ชจ๋ ๊ตฌ์ฑ์์. ๋ฉค๋ฒ ๋ณ์, ๋ฉค๋ฒ ๋ฉ์๋
- ๋ฉค๋ฒํ๋๋ ์ด๊ธฐํํ์ง ์์ผ๋ฉด default value ํ ๋น
- ๊ฐ์ฒด๋ null์ด default.
์ต๋ช (Anonymous) ๊ฐ์ฒด
๊ฐ์ฒด๋ฅผ ์์ฑํ๋, ๊ทธ ์ฐธ์กฐ๊ฐ(์ด๋ฆ)์ ๋ณ์์ ์ ์ฅํ์ง ์๊ณ ์ฆ์ ์ฌ์ฉํ๋ ๊ฐ์ฒด
public class C {
int a;
C() {
System.out.println(a); // a์ ์ด๊ธฐ๊ฐ ์ถ๋ ฅ (0)
}
public static void main(String[] args) {
new C(); // ์ต๋ช
๊ฐ์ฒด (์ฐธ์กฐ ๋ณ์ ์์ด ์์ฑ์๋ง ์คํ)
}
}
new C()๋ฅผ ํตํด ๊ฐ์ฒด๊ฐ ์์ฑ๋์ง๋ง, ์ด ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ์๊ฐ ์กด์ฌํ์ง ์์. ๊ทธ๋ฅ ์์ฑ๋ง ํ๊ณ , ์์ฑ์ ๋ด๋ถ System.out.println(a);๋ง ์ํํ๊ณ ๋๋ฉด ๊ฐ์ฒด๋ ๋ฒ๋ ค์ง
static ๋ณ์
- ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณต์ ํ๋ ๋ณ์ (๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ๋)
static ๋ฉ์๋
- ๊ฐ์ฒด ์์ด๋ ํธ์ถ ๊ฐ๋ฅ.
- ๊ฐ์ฒด ์ํ(this, ์ธ์คํด์ค ๋ณ์ ๋ฑ) ์ ๊ทผ ๋ถ๊ฐโ
public class C {
int a;
C() {
System.out.println(a); // a๋ ๊ธฐ๋ณธ๊ฐ 0
}
public static void main(String[] args) {
C c = new C(); // ์ฐธ์กฐ ๋ณ์ c์ ๊ฐ์ฒด๋ฅผ ์ ์ฅ
}
}
static int ๋ก ์ธํ side effect ๋ฐฉ์ง
'๐ Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ์ค๋ฒ๋ก๋ฉ(Overloading) (1) | 2025.07.27 |
|---|---|
| [Java] ์์ฑ์, this, ์ด๊ธฐํ ๋ธ๋ก (1) | 2025.07.27 |
| [Java] Call by Value (1) | 2025.07.27 |
| [Java] String ๊ด๋ จ ๋ฉ์๋ (1) | 2025.07.27 |
| [Java] ์ปดํ์ผ ์๋ฌ vs ๋ฐํ์ ์๋ฌ (1) | 2025.07.27 |