์ง๋ ์๊ฐ์๋ '์ถ์ํ'์ ๋ํด์ ์์๋ณด์์ต๋๋ค!
https://developyanggaeng.tistory.com/190
[์คํ๋ง ์ ๋ฌธ์ ์ํ ์๋ฐ ๊ฐ์ฒด ์งํฅ์ ์๋ฆฌ์ ์ดํด] OOP(1) ์ถ์ํ๋ ๋ชจ๋ธ๋ง
ํด๋์ค์ ๊ฐ์ฒด ๊ด๊ณ์ ์คํด์ ๋ํด์๋ 'ํฉํฐ๋ฆฌ ๋ฉ์๋ ํจํด' ๊ธ์ ์ ๋ฆฌํ์ฌ ์ ๋ก๋ ํ์์ต๋๋ค. ํด๋์ค์ ๊ฐ์ฒด์ ๊ด๊ณ๋ ๋ถ์ด๋นตํ๊ณผ ๋ถ์ด๋นต์ด ๋ง๋์ ๋ํ ์ฃผ์ https://developyanggaeng.tistory.com/189
developyanggaeng.tistory.com
๊ทธ ์ฐ์ฅ์ ์ผ๋ก static ํค์๋์ ๋ํด์ ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ๊ฐ์ฒด ์งํฅ ๋ฐฐ์ธ ๋ static์ด ๋๋ฌด ํท๊ฐ๋ ธ๋..
ํด๋์ค ๋ฉค๋ฒ vs ๊ฐ์ฒด ๋ฉค๋ฒ = static ๋ฉค๋ฒ vs instance ๋ฉค๋ฒ
์ง๊ธ๊น์ง ๋ฌด์ํ ๊ฐ์ฒด์ ํด๋์ค๋ฅผ ๊ตฌ๋ถํ๋ ๋ฒ์ ๋ํด ๋ฐฐ์ ๋๋ฐ์!
์ด์ ๊ฐ์ฒด์ ํด๋์ค์ ๋ํด์๋ ๋๊ฐ๊ณ ๋ ๋งํ ์ ์๋ ์ง๊ฒฝ์ ์ด๋ฅด๋ ์ผ๋ฆฌ๋ผ ์๊ฐํ๋ฉฐ
๋ง์ง๋ง์ผ๋ก ์ ๋ฆฌํ๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
๊ฐ์ฒด๋ ์ ์ผ๋ฌด์ดํ๊ฒ ์กด์ฌํ๋ ์ค์ฒด์ด๊ธฐ ๋๋ฌธ์ ์์ฑ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๊ณ ,
ํด๋์ค๋ ๊ฐ๋
์ด๋ฉด์ ๋ถ๋ฅ์ผ ๋ฟ์ด๋ฏ๋ก ์์ฑ์ ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค.
๊ทธ๋ผ ์ด๋ฒ์ ์ด ์ง๋ฌธ์ ํ ๋ฒ ๋ต์ ํด๋ณผ๊น์?
- ๋ฏธํค๋ง์ฐ์ค์ ๊ผฌ๋ฆฌ๋ ๋ช ๊ฐ์ธ๊ฐ์?
- ์ฅ์ ๊ผฌ๋ฆฌ๋ ๋ช ๊ฐ์ธ๊ฐ์?
- ์ ๋ฆฌ์ ๊ผฌ๋ฆฌ๋ ๋ช ๊ฐ์ธ๊ฐ์?
ํฐ ์๊ฐ์ ๋ค์ด์ง ์๊ณ ๋ ์ ๋ต์ 1๊ฐ๋ผ๋ ๊ฒ์ ์ฝ๊ฒ ์ ์ ์์ต๋๋ค.
๋ชจ๋ ์ฅ์ ๊ผฌ๋ฆฌ ๊ฐ์๋ 1๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
(์ ๋ง ํน์ํ ์ํฉ์ด ์์ ์ ์์ง๋ง ์์ธ๋ ์๋ค๊ณ ์๊ฐํ๊ฒ ์ต๋๋ค.)
์ฐธ๊ณ ๋ก ์ ์ง๋ฌธ์์ ๋ฏธํค๋ง์ฐ์ค์ ์ ๋ฆฌ๋ ๊ฐ์ฒด์ด๊ณ , ์ฅ๋ ํด๋์ค ์ ๋๋ค.
๋ชจ๋ ์ฅ ๊ฐ์ฒด์ ๊ผฌ๋ฆฌ ๊ฐ์๋ 1๊ฐ๋ก ๋์ผํ๊ธฐ ๋๋ฌธ์ ํด๋์ค๋ฅผ ํตํด ์ง๋ฌธํด๋ 1๊ฐ๋ผ๋ ๋ต์ ์ ์ ์์ต๋๋ค.
๊ทธ๋ผ ์ด ๋ง์ ์ฝ๋๋ก ์ฎ๊ฒจ๋ณผ๊น์?
public class Mouse {
public String name;
public int age;
public int countOfTail;
}
public class Main {
public static void main(String[] args) {
Mouse micky = new Mouse();
Mouse jerry = new Mouse();
Mouse mouse = new Mouse();
micky.countOfTail = 1;
jerry.countOfTail = 1;
mouse.countOfTail = 1;
}
}
๋ชจ๋ Mouse ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ ๊ฐ๊ณ ์์์๋ ๋ถ๊ตฌํ๊ณ ์์ฑ๋ Mouse ๊ฐ์ฒด ์๋งํผ ์ธ๋ฐ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ก์๋จน๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ตณ์ด ๊ฐ๋ฐ์๊ฐ ์๋๋๋ผ๋ ์ด๋ฐ ๊ฒ์ ๋ณด๋ฉด ๋ง๊ตฌ๋ง๊ตฌ ์ ๋ฆฌํ๊ณ ์ถ์ ์๊ตฌ๊ฐ ๋ค๊ธฐ ๋ง๋ จ์ ๋๋ค.
์ด๋ด ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก static ํค์๋ ์
๋๋ค.
public class Mouse {
public String name;
public int age;
public static int countOfTail = 1;
}
public class Main {
public static void main(String[] args) {
Mouse micky = new Mouse();
Mouse jerry = new Mouse();
Mouse mouse = new Mouse();
System.out.println(Mouse.countOfTail);
System.out.println(micky.countOfTail);
System.out.println(jerry.countOfTail);
}
}
1
1
1
์ด๋ ๊ฒ static ํค์๋๊ฐ ๋ถ์ ์์ฑ์ ํด๋์ค ๋ฉค๋ฒ ์์ฑ์ด๋ผ๊ณ ํฉ๋๋ค.
๊ทธ๋ผ static์ด ์ ๋ถ์ ์์ฑ์? ๊ฐ์ฒด ๋ฉค๋ฒ ์์ฑ์ด๋ผ๊ณ ํฉ๋๋ค.
์์ฑ ๋ฟ๋ง ์๋๋ผ ๋ฉ์๋๋ static ํค์๋ ์ฌ๋ถ์ ๋ฐ๋ผ ํด๋์ค ๋ฉค๋ฒ ๋ฉ์๋, ๊ฐ์ฒด ๋ฉค๋ฒ ๋ฉ์๋๋ก ๋๋ ์ ์์ต๋๋ค.
๊ทธ๋์ main()๋ ํญ์ static ํค์๋๊ฐ ๋ถ๋ ๊ฒ์ด์ฃ !
ํด๋์ค ๋ฉค๋ฒ๋ค์ static ํค์๋์ ํจ๊ป ์ฌ์ฉ๋๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ์คํํฑ ์์ญ์ ์์ฃผํ๋ฏ๋ก static(์ ์ ) ๋ฉค๋ฒ๋ผ๊ณ ๋ ํฉ๋๋ค.
์ ์๊ฐ์ ๋ฐฐ์ ๋ฏ์ด ๊ฐ์ฒด ๋ฉค๋ฒ๋ค์ ํด๋์ค์ ์ธ์คํด์ค ์ด๋ฏ๋ก ์ธ์คํด์ค ๋ฉค๋ฒ๋ผ๊ณ ๋ ํฉ๋๋ค.
์ ๋ฆฌ๐ก
ํด๋์ค ๋ฉค๋ฒ == static ๋ฉค๋ฒ == ์ ์ ๋ฉค๋ฒ
๊ฐ์ฒด ๋ฉค๋ฒ == ์ธ์คํด์ค ๋ฉค๋ฒ
์ด๋ฌํ ์ ์ ๋ฉค๋ฒ ์์ฑ์ ํด๋น ํด๋์ค์ ๋ชจ๋ ๊ฐ์ฒด๋ค์ด ๊ฐ์ ๊ฐ์ ๊ฐ์ง ๋ ์ฌ์ฉํฉ๋๋ค.
- ๊ฐ์์ง ํด๋์ค์ ๋ค๋ฆฌ ๊ฐ์
- ์น์ฉ์ฐจ ํด๋์ค์ ๋ฐํด ๊ฐ์
์ง๊ธ ๋น์ฅ ์๊ฐ๋๋ ์์๊ฐ ์ด๊ฒ ๋ฐ์ ์๋ค์ ^^;;;
์ ์ ๋ฉ์๋๋ ์๋ฐ์์ ์์ฃผ ์ฌ์ฉ๋๋ Math ํด๋์ค๋ฅผ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
Math ํด๋์ค์ ์๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋๋ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ์์ฑ ์ํ๊ณ ๋ฐ๋ก ์ฐ๊ณค ํ์ฃ .
(์. Math.random(), Math.floor())
๊ทธ๋ผ ์ด๋ป๊ฒ ๊ฐ์ฒด ์์ฑ ์์ด ๋ฐ๋ก ์ธ ์ ์๋๊ฑธ๊น์?
โก๏ธ ์ ์ ๋ฉค๋ฒ๋ ๊ฐ์ฒด๊ฐ ์๋ ํด๋์ค์ ์ํด ์์ต๋๋ค.
ํด๋์ค๋ JVM ๊ตฌ๋์ ๋ฉ๋ชจ๋ฆฌ์ ์คํ ์์ญ์ ๋ฐ๋ก ๋ฐฐ์น๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์กด์ฌ ์ฌ๋ถ ์๊ด์์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๊ธฐํ
ํน์ ์คํ ์์ญ์ ์๊ธฐ๋ ๋ณ์๋ค์ ๋ญ๋ผ๊ณ ํ๋์ง ์์๋์?
๋ค, ๋ง์ต๋๋ค. ์ง์ญ ๋ณ์ ์
๋๋ค.
์คํ ์์ญ : ์ง์ญ ๋ณ์
ํ ์์ญ : ๊ฐ์ฒด ๋ณ์(์ธ์คํด์ค ๋ณ์)
์คํํฑ ์์ญ : ์ ์ ๋ณ์
์ง์ญ ๋ณ์๋ ๋ณ๋๋ก ์ด๊ธฐํ๋ฅผ ํด์ฃผ์ง ์์ผ๋ฉด ์ฐ๋ ๊ธฐ ๊ฐ์ ๊ฐ์ต๋๋ค.
ํ๋ ํด๋์ค ์์ฑ๊ณผ ๊ฐ์ฒด ์์ฑ์ ๋ณ๋๋ก ์ด๊ธฐํ๋ฅผ ํด์ฃผ์ง ์์๋ ์ ์ํ์ 0, ์ค์ํ์ 0.0, ๋ ผ๋ฆฌํ์ false, ๊ฐ์ฒด๋ null๋ก ์ด๊ธฐํ๊ฐ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๊ฐ๋จํ static ํค์๋์ ๋ํด์ ์ดํด๋ณด์๋๋ฐ์.
์ ๊ฐ ๊ฐ๊ณ ์๋ ์๋ฌธ์ ์ด ํด๊ฒฐ๋ ๊ฒ ์ฒ๋ผ ์ด ๊ธ์ ์ฝ์ผ์๋ ๋ถ๋ค๋ ์๋ฌธ์ ์ด ๋ชจ๋ ํด๊ฒฐ๋์ จ๊ธธ ๋ฐ๋๋๋ค.
๋ค์ ์๊ฐ์๋ ๋ถ์ด๋นตํ๊ณผ ๋ถ์ด๋นต ์ฒ๋ผ ์คํด๊ฐ ๋ง์ '์์'์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค!
๊ฐ์ฌํฉ๋๋ค.
'๐ Study > OOP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| OOP(3) ์์: ์ฌ์ฌ์ฉ๊ณผ ํ์ฅ + LSP, ISP (0) | 2023.02.22 |
|---|---|
| OOP(1) ์ถ์ํ๋ ๋ชจ๋ธ๋ง (0) | 2023.02.22 |