๊ฐ์ฒด ์งํฅ
80๋ ์ด ์ํํธ์จ์ด์ ์๊ธฐ - ๋น ๋ฅธ ๋ณํ๋ฅผ ๋ชป ์ซ์๊ฐ
ํด๊ฒฐ์ฑ ์ผ๋ก ๊ฐ์ฒด์งํฅ ์ธ์ด๋ฅผ ๋์ (์ ์ฐจ์ → ๊ฐ์ฒด์งํฅ)
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋๊ณ ์ ์ง๋ณด์๊ฐ ์ฉ์ด, ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ
๊ฐ์ฒด์งํฅ ์ธ์ด = ํ๋ก๊ทธ๋๋ฐ ์ธ์ด + ๊ฐ์ฒด์งํฅ ๊ฐ๋ (๊ท์น)
oop ( object-oriented programming )
1. ์บก์ํ
2. ์์
3. ์ถ์ํ
4. ๋คํ์ฑ
ํด๋์ค์ ๊ฐ์ฒด
ํด๋์ค์ ์ ์ : ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์ ์ํด ๋์ ๊ฒ
ํด๋์ค์ ์ฉ๋ : ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ
๊ฐ์ฒด์ ์ ์ : ์ค์ ๋ก ์กด์ฌํ๋ ๊ฒ. ์ฌ๋ฌผ ๋๋ ๊ฐ๋
๊ฐ์ฒด์ ์ฉ๋ : ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ฅ๊ณผ ์์ฑ์ ๋ค๋ฆ
๊ฐ์ฒด์ ๊ตฌ์ฑ์์ - ์์ฑ๊ณผ ๊ธฐ๋ฅ
๊ฐ์ฒด = ์์ฑ(๋ณ์) + ๊ธฐ๋ฅ(๋ฉ์๋)
๊ฐ์ฒด์ ์ธ์คํด์ค
๊ฐ์ฒด : ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ๋ํํ๋ ์ผ๋ฐ์ ์ฉ์ด
์ธ์คํด์ค : ํน์ ํด๋์ค๋ก๋ถํฐ ์์ฑ๋ ๊ฐ์ฒด ( Ex. Tv์ธ์คํด์ค )
ํ๋์ ์์คํ์ผ์๋ ํ๋์ ํด๋์ค๋ง ์์ฑํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฌ์ฉ
1. ๊ฐ์ฒด์ ์์ฑ
ํด๋์ค๋ช
๋ณ์๋ช
; → ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ ์ฐธ์กฐ๋ณ์๋ฅผ ์ ์ธ
๋ณ์๋ช
= new ํด๋์ค๋ช
(); → ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑ ํ , ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์ฐธ์กฐ๋ณ์์ ์ ์ฅ
Tv t; → Tvํด๋์ค ํ์
์ ์ฐธ์กฐ๋ณ์ t๋ฅผ ์ ์ธ
t = new Tv(); → Tv์ธ์คํด์ค๋ฅผ ์์ฑํ ํ , ์์ฑ๋ Tv์ธ์คํด์ค์ ์ฃผ์๋ฅผ t์ ์ ์ฅ
Tv t = new Tv(); → ํ๋ฒ์ ์ ์์๋ ์๋ค.
2. ๊ฐ์ฒด์ ์ฌ์ฉ
t.channel = 7; → Tv์ธ์คํด์ค์ ๋ฉค๋ฒ๋ณ์ channel์ ๊ฐ์ 7๋ก ํ๋ค.
t.channelDown(); → Tv์ธ์คํด์ค์ ๋ฉ์๋ channelDown()์ ํธ์ถํ๋ค.
System.out.println("ํ์ฌ ์ฑ๋์ " + t.channel + " ์
๋๋ค.");
ํ๋์ ์ธ์คํด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์ฐธ์กฐ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ๋ ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง, ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ํ๋์ ์ฐธ์กฐ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ๋ ๋ถ๊ฐ๋ฅํ๋ค.
๊ฐ์ฒด ๋ฐฐ์ด
๊ฐ์ฒด ๋ฐฐ์ด == ์ฐธ์กฐ ๋ณ์ ๋ฐฐ์ด
Tv tv1,tv2,tv3; → Tv[] tvArr = new Tv[3]; ( ๊ธธ์ด๊ฐ 3์ธ Tvํ์
์ ์ฐธ์กฐ๋ณ์ ๋ฐฐ์ด )
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฐฐ์ด์ ๊ฐ ์์์ ์ ์ฅ
์ ๋ก์ง์ ๊ฐ๋จํ ์ด๊ธฐํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
Tv[] tvArr = { new Tv(),new Tv(),new Tv() };
๋ณด๋ค์ํผ , ๊ฐ์ฒด ๋ฐฐ์ด์ด๋ผ ํ์ฌ ํน๋ณํ ๋ถ๋ถ์ด ์๋ค.
์ฐธ์กฐ ๋ณ์ ๋ฐฐ์ด๊ณผ ๊ฑฐ์ ์ ์ฌํ๋ค.
ํด๋์ค
ํด๋์ค์ ์ ์ (1)
ํด๋์ค == ๋ฐ์ดํฐ + ํจ์
โ ์ค๊ณ๋
ํด๋์ค โ ๋ฐ์ดํฐ + ํจ์
โ ์ฌ์ฉ์ ์ ์ ํ์
๋ณ์ → ๋ฐฐ์ด → ๊ตฌ์กฐ์ฒด → ํด๋์ค
1. ๋ณ์ : ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
2. ๋ฐฐ์ด : ๊ฐ์ ์ข ๋ฅ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
3. ๊ตฌ์กฐ์ฒด : ์๋ก ๊ด๋ จ๋ ์ฌ๋ฌ ๋ฐ์ดํฐ(์ข ๋ฅ ๊ด๊ณ X)๋ฅผ ํ๋๋ก ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
4. ํด๋์ค : ๋ฐ์ดํฐ์ ํจ์์ ๊ฒฐํฉ (๊ตฌ์กฐ์ฒด + ํจ์(๋ฉ์๋))
์ฌ์ฉ์ ์ ์ ํ์ - ์ํ๋ ํ์ ์ ์ง์ ๋ง๋ค ์ ์๋ค.
Time์ด๋ผ๋ ํ์ ์ ์ง์ ์์ฑํ๋ค๊ณ ๊ฐ์ ์ ํด๋ณด์.
๋ง์ฝ ๊ฐ์ฒด๋ฅผ ์์ฑ ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
int hour = 12;
int minute = 34;
int second = 56;
์ด๊ฑธ ๊ฐ์ฒด๋ก ๋ฌถ์ด์ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56;
์ ์ธ ์์น์ ๋ฐ๋ฅธ ๋ณ์์ ์ข ๋ฅ
๋ณ์๋ ์ด๋์ ์ ์ธ์ด ๋๋์ ๋ฐ๋ผ ์ข ๋ฅ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋ถ๋ฅ๋๋ค.
์์ญ์ ํด๋์ค ์์ญ๊ณผ ๋ฉ์๋ ์์ญ์ผ๋ก ๋๋๋ค.
class Variables {
int iv; → ์ธ์คํด์ค ๋ณ์
static int cv; → ํด๋์ค ๋ณ์(static๋ณ์, ๊ณต์ ๋ณ์)
void method(){
int lv = 0; → ์ง์ญ๋ณ์
}
}
ํด๋์ค ์์ญ์ ํด๋์ค์ ์์๊ณผ ๋๊น์ง๊ฐ ์์ญ์ด๋ฉฐ , ๋ฉ์๋๋ ๋ฉ์๋ ์์ญ์ ์์๋ถํฐ ๋๊น์ง์ด๋ค.
ํด๋์ค ์์ญ์๋ ์ ์ธ๋ฌธ๋ง ๊ฐ๋ฅํ๋ค. ๋ณ์ ์ ์ธ , ๋ฉ์๋ ์ ์ธ๋ง ๊ฐ๋ฅํ๋ค.
ํด๋น ์์๊ฐ ๋ค๋ฅธ ๊ฑฐ๋ ์๊ด์ด ์๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ ๋ณ์ ์ ์ธ์ ๋จผ์ ํ๋ ํธ์ด๋ค.
๋ณ์์ ์ข ๋ฅ | ์ ์ธ์์น | ์์ฑ์๊ธฐ |
ํด๋์ค ๋ณ์ (class variable) |
ํด๋์ค ์์ญ | ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ |
์ธ์คํด์ค ๋ณ์ (instance variable) |
์ธ์คํด์ค๊ฐ ์์ฑ๋์์ ๋ | |
์ง์ญ๋ณ์ (local variable) |
ํด๋์ค ์์ญ ์ด์ธ์ ์์ญ (๋ฉ์๋ ์์ฑ์, ์ด๊ธฐํ ๋ธ๋ญ ๋ด๋ถ) |
๋ณ์ ์ ์ธ๋ฌธ์ด ์ํ๋์์ ๋ |
์ง์ญ๋ณ์(local variable)์ ๋ฒ์(scope)๋ ํด๋น ๋ณ์ ์ ์ธ๋ ๋ฉ์๋๊ฐ ๋๋ ๋๊น์ง ์ ํจํ๋ค.
๋ฉ์๋ ์ข ๋ฃ ์ ์๋์ผ๋ก ์ ๊ฑฐ๋๋ค.
ํด๋์ค ๋ณ์(class variable)์ ์ธ์คํด์ค ๋ณ์(instance variable)๋ ํด๋์ค ์ ์ฒด์ ์์ญ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์ธ์คํด์ค ๋ณ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑ์ ํ์ ๋ ๋ง๋ค์ด์ง๋ค.
์ธ์คํด์ค ๋ณ์(instance variable)๋ฅผ ๋ฌถ์ด๋์ ๊ฒ์ด ๊ฐ์ฒด๋ผ๊ณ ๋ณผ ์๋ ์๋ค.
ํด๋์ค ๋ณ์(cl)์ ์ธ์คํด์ค ๋ณ์(iv)์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ํด๋์ค ๋ณ์๋ ๊ฐ์ฒด ์์ฑ์ ์ ํด๋ ๋๋ค๋ ์ ์ด๋ค.
์ฝ๊ฒ ๋งํด ํด๋์ค ๋ณ์๋ ์๋ฌด ๋๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ธ์คํด์ค ๋ณ์๋ ๊ฐ์ฒด ์์ฑ์ ํด์ผ์ง๋ง ์ฌ์ฉํ ์ ์๋ค.
์์ญ → โ ํด๋์ค ์์ญ - iv , cv(static + iv)
โก ๋ฉ์๋ ์์ญ - lv
์ธ์คํด์ค ๋ณ์(iv)๋ ์ฐธ์กฐ ๋ณ์๊ฐ ์์ด์ง๋ฉด ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด์ ์๋์ผ๋ก ์ฌ๋ผ์ง๋ค.
ํด๋์ค ๋ณ์์ ์ธ์คํด์ค ๋ณ์
cv์ iv์ ์ฐจ์ด์ ์ ์ธ์คํด์ค ๋ณ์๋ ๊ฐ๋ณ์ ์ธ ์์ฑ์ด๊ณ ํด๋์ค ๋ณ์๋ ๊ณตํต์ ์ธ ์์ฑ์ด๋ผ๋ ์ ์ด๋ค.
class Card {
String kind; → ๋ฌด๋ฌ
int number; → ์ซ์
static int width = 100; → ํญ
static int height = 250; → ๋์ด
์นด๋๋ง๋ค ๋ฌด๋ฌ์ ์ซ์๋ ๋ค๋ฅด๋ค. ํ์ง๋ง ์นด๋์ ํญ๊ณผ ๋์ด๋ ๋ชจ๋ ์ผ์นํด์ผ ํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ณตํก์ ์ธ ํญ๊ณผ ๋์ด๋ static์ผ๋ก cv๋ก ์ ์ธํ๊ณ , ๊ฐ๋ณ์ ์ธ ๋ถ๋ถ์ iv๋ก ์ ์ธ์ ํด์ผ ํ๋ค.
Card c = new Card();
c.kind = "HEART";
c.number = 5;
Card.width = 200;
Card.height = 300;
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ cv๋ ๋ฌผ๋ก ์ฐธ์กฐ ๋ณ์๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง,
cv๋ฅผ ์ฌ์ฉํ ๋๋ ์ฐธ์กฐ ๋ณ์๊ฐ ์๋ Class์ด๋ฆ์ ์ฌ์ฉํด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ฃผ๋ ๊ฒ ๋ฐ๋์งํ๋ค.
๋ฉ์๋
๋ฉ์๋๋?
1. ๋ฌธ์ฅ๋ค์ ๋ฌถ์ด๋์ ๊ฒ
- ์์ ๋จ์๋ก ๋ฌธ์ฅ๋ค์ ๋ฌถ์ด์ ์ด๋ฆ ๋ถ์ธ ๊ฒ
2. ๊ฐ(์ ๋ ฅ)์ ๋ฐ์์ ์ฒ๋ฆฌํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ(์ถ๋ ฅ)
โถ ๋ฉ์๋์ ์ฅ์
- ์ฝ๋์ ์ค๋ณต์ ์ค์ผ ์ ์๋ค.
- ์ฝ๋์ ๊ด๋ฆฌ๊ฐ ์ฝ๋ค.
- ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค.
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ ์ดํดํ๊ธฐ ์ฌ์์ง๋ค.
โถ ๋ฉ์๋์ ์์ฑ
- ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋๋ ์ฌ๋ฌ ๋ฌธ์ฅ์ ๋ฉ์๋๋ก ์์ฑ
- ํ๋์ ๋ฉ์๋๋ ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ์ํํ๋๋ก ์์ฑ
๋ฉ์๋ = ์ ์ธ๋ถ + ๊ตฌํ๋ถ
๋ฐํํ์
๋ฉ์๋์ด๋ฆ (ํ์
๋ณ์๋ช
, ํ์
๋ณ์๋ช
, ...) → ์ ์ธ๋ถ
{
๋ฉ์๋ ํธ์ถ์ ์ํ๋ ์ฝ๋ → ๊ตฌํ๋ถ
}
๋งค๊ฐ ๋ณ์์ ์ ๋ ฅ๊ฐ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๊ฐ๋ฅํ์ง๋ง ๋ฉ์๋์ ์ถ๋ ฅ ๊ฐ์ ์ค์ง ํ ๊ฐ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ฌ๋ฌ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์ํ๋ค๋ฉด ๋ฐฐ์ด ๋๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ์ถ๋ ฅ์ ํด์ผ ํ๋ค.
์ถ๋ ฅํ๋ ๊ฐ์ด ์๋ค๋ฉด ๋ฐํ ํ์ ์ void๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ง์ญ๋ณ์(lv) : ๋ฉ์๋ ๋ด์ ์ ์ธ๋ ๋ณ์
int add(int x , int y){
int result = x + y;
return result;
}
int multiply(int x , int y){
int result = x * y;
return result;
}
์๋ก ๋ค๋ฅธ ๋ฉ์๋์ ๋ณ์๋ ํด๋น ๋ฉ์๋ ๋ด์์๋ง ์ ํจํ๊ธฐ ๋๋ฌธ์ , ๋ค๋ฅธ ๋ฉ์๋์ ๋ณ์ ์ด๋ฆ๊ณผ ๊ฒน์ณ๋ ์๊ด์๋ค.
๋ฉ์๋์ ํธ์ถ
๋ฉ์๋ ์ด๋ฆ(๊ฐ 1 , ๊ฐ 2 ,... ) → ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ
๋ฉ์๋์ ์คํ ํ๋ฆ
MyMath mm = new MyMath(); → ๋จผ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค. (๊ฐ์ฒด ์์ฑ)
long value = mm.add(1L,2L); → ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
long add(long a, long b){
long result = a + b;
return result;
}
return๋ฌธ
์คํ ์ค์ธ ๋ฉ์๋๋ฅผ ์ข ๋ฃํ๊ณ ํธ์ถํ ๊ณณ์ผ๋ก ๋๋์๊ฐ๋ค.
int multiply(int x, int y){
int result = x * y;
return resuly; → ๋ฐํ ํ์
์ด void๊ฐ ์๋๋ฏ๋ก ์๋ต๋ถ๊ฐ
}
int max(int a,int b){
if(a>b)
return a; → ์กฐ๊ฑด์์ด ์ฐธ์ผ ๋๋ง ์คํ๋๋ค.
}
๋ฐํ ํ์ ์ด void์ผ ๊ฒฝ์ฐ return์ด ์๋ต์ด ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง ๋ฐํ ํ์ ์ด void๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ฐ๋์ return๋ฌธ์ด ํ์ํ๋ค.
max ๋ฉ์๋ ๊ฐ์ ๊ฒฝ์ฐ๋ return๋ฌธ์ด ์์ง๋ง return๋ฌธ์ด ์๋ค๊ณ ์๋ฌ๊ฐ ๋๋ค.
์กฐ๊ฑด์์ด ์ฐธ์ผ ๋๋ง return๋ฌธ์ด ์๊ณ , ๊ฑฐ์ง์ผ ๋ return ํ๋ ๊ฐ์ด ์์ด์ ์๋ฌ๊ฐ ๋๋ ๊ฒ์ด๋ค.
๊ฑฐ์ง์ผ ๋ return๋ฌธ๋ ์ ๋ ฅํด์ฃผ๋ฉด ์๋ฌ๊ฐ ์์ด์ง๋ค.
ํธ์ถ ์คํ(call stack)
์คํ(stack)์ ๋ฐ์ด ๋งํ ์์์ ๊ฐ๋ค. ์์ ์์ ์ฑ ์ ์์ผ๋ฉด ์ฐจ๊ณก์ฐจ๊ณก ์์ด๋ ๊ฐ๋ ์ด๋ค.
๊ทธ๋ผ ํธ์ถ ์คํ์ ๋ฌด์์ผ๊น
๋ฉ์๋ ์ํ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ๊ณต๋๋ ๊ณต๊ฐ์ด๋ค.
๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ํธ์ถ ์คํ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ๋๊ณ ์ข ๋ฃ๋๋ฉด ํด์ ๊ฐ ๋๋ค.
์๋ ์๋ ๋ฉ์๋๊ฐ ์์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฒ์ด๋ค.
๋งจ ์์ ๋ฉ์๋ ํ๋๋ง ์คํ ์ค์ด๋ฉฐ ๋๋จธ์ง๋ ๋๊ธฐ ์ค์ธ ์ํ์ด๋ค.
๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์ - ๋ณ์์ ๊ฐ์ ์ฝ๊ธฐ๋ง ํ ์ ์๋ค.(read only)
์ฐธ์กฐํ ๋งค๊ฐ๋ณ์ - ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.(read & write)
๋ฐํ ํ์ ์ด ์ฐธ์กฐํ์ด๋ผ๋ ๋ป์ ๊ฐ์ฒด์ ์ฃผ์ ๋๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค๋ ๋ป์ด๋ค.
Static
static ๋ฉ์๋์ ์ธ์คํด์ค ๋ฉ์๋
โถ ์ธ์คํด์ค ๋ฉ์๋
- ์ธ์คํด์ค ์์ฑ ํ, '์ฐธ์กฐ๋ณ์.๋ฉ์๋์ด๋ฆ()'์ผ๋ก ํธ์ถ
- ์ธ์คํด์ค ๋ฉค๋ฒ(iv, im)์ ๊ด๋ จ๋ ์์ ์ ํ๋ ๋ฉ์๋
- ๋ฉ์๋ ๋ด์์ ์ธ์คํด์ค ๋ณ์(iv) ์ฌ์ฉ ๊ฐ๋ฅ
โถ static ๋ฉ์๋ ( ํด๋์ค ๋ฉ์๋ )
- ๊ฐ์ฒด ์์ฑ ์์ด 'ํด๋์ค์ด๋ฆ.๋ฉ์๋์ด๋ฆ()'์ผ๋ก ํธ์ถ
- ์ธ์คํด์ค ๋ฉค๋ฒ(iv, im)์ ๊ด๋ จ ์๋ ์์ ์ ํ๋ ๋ฉ์๋
- ๋ฉ์๋ ๋ด์์ ์ธ์คํด์ค ๋ณ์(iv) ์ฌ์ฉ๋ถ๊ฐ
ํฌ๊ฒ ๋ณด๋ฉด ์ธ์คํด์ค ๋ณ์(iv)๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉํ์ง ์๋๋๋ก ๋๋๋ ๊ฒ์ด๋ค.
์ฌ์ฉํ๋ฉด ์ธ์คํด์ค ๋ฉ์๋ , ์ฌ์ฉ ์ ํ๋ฉด static๋ฉ์๋๋ก ๋ณด๋ฉด ๋๋ค.
System.out.println(MyMath2.add(200L,100L); → ํด๋์ค๋ฉ์๋ ํธ์ถ (๊ฐ์ฒด์์ฑ ์์ด ํธ์ถ๊ฐ๋ฅ)
MyMath2 mm = new MyMath2(); → ์ธ์คํด์ค ์์ฑ (๊ฐ์ฒด ์์ฑ)
mm.a = 200L; → iv
mm.b = 100L; → iv
System.out.println(mm.add()); → ์ธ์คํด์ค๋ฉ์๋ ํธ์ถ (์์ฑ ํ ํธ์ถ)
๋ฉ์๋์ static์ ๋ถ์ด๋์ง ์ ๋ถ์ด๋์ง ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ธ์คํด์ค ๋ณ์(iv)๋ฅผ ์ฌ์ฉํ๋ฉด static์ ๋ชป ๋ถ์ด๊ณ , ์ฌ์ฉ ์ ํ๋ฉด static์ ๋ถ์ด๋ ๊ฒ์ด๋ค.
iv์ ์ฌ์ฉ ์ฌ๋ถ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ ๊ฒ์ด๋ค.
๋ฉ์๋ ๊ฐ์ ํธ์ถ๊ณผ ์ฐธ์กฐ
โถ static ๋ฉ์๋๋ ์ธ์คํด์ค ๋ณ์(iv)๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
class TestClass {
int iv; → ์ธ์คํด์ค ๋ณ์
static int cv; → ํด๋์ค ๋ณ์
void instanceMethod(){ → ์ธ์คํด์ค ๋ฉ์๋
System.out.println(iv); → ์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
System.out.println(cv); → ํด๋์ค ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
}
static void staticMethod(){ → static๋ฉ์๋
System.out.println(iv); → Error! ์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
System.out.println(cv); → ํด๋์ค ๋ณ์๋ ์ฌ์ฉํ ์ ์๋ค.
}
}
โถ static ๋ฉ์๋๋ ์ธ์คํด์ค ๋ฉ์๋(im)๋ฅผ ํธ์ถํ ์ ์๋ค.
Class TestClass {
void instanceMethod(){} → ์ธ์คํด์ค๋ฉ์๋
static void staticMethod() {} → static๋ฉ์๋
void instanceMethod2() { → ์ธ์คํด์ค๋ฉ์๋
instanceMethod(); → ๋ค๋ฅธ ์ธ์คํด์ค๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
staticMethod(); → static๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
}
static void staticMethod2() { → static๋ฉ์๋
instanceMethod(); → Error! ์ธ์คํด์ค๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค.
staticMethod(); → static๋ฉ์๋๋ ํธ์ถ ํ ์ ์๋ค.
}
}
์ค๋ฒ๋ก๋ฉ (overloading)
- ํ ํด๋์ค ์์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋ ์ฌ๋ฌ ๊ฐ ์ ์ํ๋ ๊ฒ
์ค๋ฒ๋ก๋ฉ์ ๋ํ์ ์ธ ์๋ println์ด๋ค. println() , println(boolean x) , println(char x) ๋ฑ
println์ด๋ผ๋ ๋ฉ์๋ ํ๋๋ก ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ํ ์ ์๋ค.
์ค๋ฒ๋ก๋ฉ์ด ์ฑ๋ฆฝํ๊ธฐ ์ํ ์กฐ๊ฑด
1. ๋ฉ์๋ ์ด๋ฆ์ด ๊ฐ์์ผ ํ๋ค.
2. ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๋๋ ํ์ ์ด ๋ฌ๋ผ์ผ ํ๋ค.
3. ๋ฐํ ํ์ ์ ์ํฅ ์๋ค.
์์ฑ์ (constructor)
- ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋๋ง๋ค ํธ์ถ๋๋ '์ธ์คํด์ค ์ด๊ธฐํ ๋ฉ์๋' → (iv ์ด๊ธฐํ ๋ฉ์๋)
- ์ธ์คํด์ค ์์ฑ ์ ์ํํ ์์ (iv ์ด๊ธฐํ)์ ์ฌ์ฉ
์์ฑ์๋ฅผ ๋ง๋๋ ๊ท์น
1. ์์ฑ์ ์ด๋ฆ์ด ํด๋์ค ์ด๋ฆ๊ณผ ๊ฐ์์ผ ํ๋ค.
2. ๋ฆฌํด ๊ฐ์ด ์๋ค. ( void ์ ๋ถ์ )
3. ๋ชจ๋ ํด๋์ค๋ ๋ฐ๋์ ์์ฑ์๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
๊ธฐ๋ณธ ์์ฑ์ (default constructor)
- ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์์ฑ์
- ์์ฑ์๊ฐ ํ๋๋ ์์ ๋๋ง, ์ปดํ์ผ๋ฌ๊ฐ ์๋ ์ถ๊ฐ
ํด๋์ค์ด๋ฆ() {} → ๊ธฐ๋ณธ ์์ฑ์
Point() {} → Pointํด๋์ค์ ๊ธฐ๋ณธ ์์ฑ์
์์ฑ์ this()
- ์์ฑ์์์ ๋ค๋ฅธ ์์ฑ์ ํธ์ถํ ๋ ์ฌ์ฉ
- ๋ค๋ฅธ ์์ฑ์ ํธ์ถ ์ ์ฒซ ์ค์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
์ฐธ์กฐ๋ณ์ this
- ์ธ์คํด์ค ์์ ์ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ณ์
- ์ธ์คํด์ค ๋ฉ์๋(์์ฑ์ ํฌํจ)์์ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ง์ญ๋ณ์(lv)์ ์ธ์คํด์ค ๋ณ์(iv)๋ฅผ ๊ตฌ๋ณํ ๋ ์ฌ์ฉ
์ฐธ์กฐ๋ณ์ this์ ์์ฑ์ this()
this → ์ธ์คํด์ค ์์ ์ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ณ์. ์ธ์คํด์ค์ ์ฃผ์๊ฐ ์ ์ฅ๋์ด ์๋ค.
๋ชจ๋ ์ธ์คํด์ค ๋ฉ์๋์ ์ง์ญ๋ณ์๋ก ์จ๊ฒจ์ง ์ฑ๋ก ์กด์ฌํ๋ค.
this() , this(๋งค๊ฐ๋ณ์) → ์์ฑ์, ๊ฐ์ ํด๋์ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํ๋ค.
[ this์ this()๋ ๋น์ทํ๊ฒ ์๊ฒผ์ ๋ฟ ์์ ํ ๋ค๋ฅธ ๊ฒ์ด๋ค. this๋ '์ฐธ์กฐ ๋ณ์'์ด๊ณ , this()๋ '์์ฑ์'์ด๋ค. ]
๋ณ์์ ์ด๊ธฐํ
- ์ง์ญ๋ณ์(lv)๋ ์๋ ์ด๊ธฐํํด์ผ ํจ (์ฌ์ฉ ์ ํ์)
- ๋ฉค๋ฒ ๋ณ์(iv, cv)๋ ์๋ ์ด๊ธฐํ๋๋ค.
class InitTest {
int x; → ์ธ์คํด์ค ๋ณ์
int y = x; → ์ธ์คํด์ค ๋ณ์
void method1() {
int i; → ์ง์ญ๋ณ์
int j = i; → Error! ์ง์ญ๋ณ์๋ฅผ ์ด๊ธฐํํ์ง ์๊ณ ์ฌ์ฉ
}
}
๋ฉค๋ฒ ๋ณ์์ ์ด๊ธฐํ
1. ๋ช ์์ ์ด๊ธฐํ ( = )
class Car {
int door = 4; → ๊ธฐ๋ณธํ(primitive type) ๋ณ์์ ์ด๊ธฐํ
Engine e = new Engine(); → ์ฐธ์กฐํ(reference type) ๋ณ์์ ์ด๊ธฐํ
2. ์ด๊ธฐํ ๋ธ๋ญ ( ๋ณต์กํ ์ด๊ธฐํ )
iv - ์ธ์คํด์ค ์ด๊ธฐํ ๋ธ๋ญ : { }
cv - ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ : static { }
3. ์์ฑ์ ( iv ์ด๊ธฐํ , ๋ณต์กํ ์ด๊ธฐํ )
Car(Strint color , String gearType , int door) { → ๋งค๊ฐ๋ณ์์๋ ์์ฑ์
this.color = color;
this.gearType = gearType;
this.door = door;
cv , iv ์ด๊ธฐํ | |
์๋์ด๊ธฐํ | 0 |
๊ฐ๋จ์ด๊ธฐํ | = |
๋ณต์ก์ด๊ธฐํ | { } , static{ } , ์์ฑ์ |
๋ฉค๋ฒ๋ณ์ ์ด๊ธฐํ - static { }
1. ๋ช ์์ ์ด๊ธฐํ (=) ( ๊ฐ๋จ ์ด๊ธฐํ )
2. ์ด๊ธฐํ ๋ธ๋ญ - { } , static { } ( cv์ด๊ธฐํ )
3. ์์ฑ์ ( iv์ด๊ธฐํ )
class StaticBlockTest {
static int[] arr = new int [10]; → ๋ช
์์ ์ด๊ธฐํ
static { → ํด๋์ค ์ด๊ธฐํ ๋ธ๋ญ - ๋ฐฐ์ด arr์ ๋์๋ก ์ฑ์ด๋ค.
for(int i = 0;i<arr.length;i++){
arr[i] = (int)(Math.random()*10)+1;
}
}
โถ ํด๋์ค ๋ณ์ ์ด๊ธฐํ ์์ : ํด๋์ค๊ฐ ์ฒ์ ๋ก๋ฉ๋ ๋ ๋จ ํ๋ฒ ( ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ ๋ )
โถ ์ธ์คํด์ค ๋ณ์ ์ด๊ธฐํ ์์ : ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋๋ง๋ค
์ด๊ธฐํ ์์
โ cv → iv
โก ์๋ ( 0 ) → ๊ฐ๋จ ( = ) → ๋ณต์ก( static{} , ์์ฑ์ )
'๐จ๏ธ Language > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java]๊ฐ์ฒด์งํฅ (3) - ์ ์ด์,์บก์ํ,๋คํ์ฑ,์ฐธ์กฐ๋ณ์์ ํ๋ณํ (0) | 2022.10.26 |
---|---|
[Java]๊ฐ์ฒด์งํฅ (2) - ์์,์ฐธ์กฐ๋ณ์, ์ค๋ฒ๋ผ์ด๋ฉ, ํจํค์ง (1) | 2022.09.01 |
[Java]๋ฐฐ์ด (0) | 2022.08.25 |
[Java]์กฐ๊ฑด๋ฌธ(if,switch)๊ณผ ๋ฐ๋ณต๋ฌธ(for,while) (0) | 2022.08.23 |
[Java]์ฐ์ฐ์(Operator) (0) | 2022.08.22 |