2021. 2. 28. 20:53ใ๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/Java
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค.
ํ์ฌ ์ฃผ๋ํ๋์ ๊ตญ๋น์ง์์ผ๋ก ์๋ฐ๋ฅผ ๋ฐฐ์ฐ๊ณ ์๊ณ , ๊ทธ ๊ณต๋ถ ๋ด์ฉ์ ๋ค์ ๋ณต์ตํ ๊ฒธ ๋ํ, ์๋ฐ ๊ณต๋ถ๋ฅผ ํ์๋ ๋ถ๋ค๊ป ๋ณด๋ค ์ฝ๊ฒ ์ดํดํ ์ ์๋ ์๋ฃ๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ ์ ์์ ๋ธ๋ก๊ทธ์ ๊ธ์ ์ฌ๋ฆฌ๊ณ ์๋ ๊ฒ์ด์์.
์ผ๋จ, ์๋ฐ์ ๊ฐ์ฒด์งํฅ์ C์ธ์ด๋ฅผ ๊ฐ๋ณ๊ฒ ๋ฐฐ์ ๋ ๋ถ๋ค์ด๋ผ๋ฉด ๊ฐ์ฒด์งํฅ์์ ๋ง์ด ์ด๋ ค์์ ๋๋ผ์ค๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ด์์. ์ ๋ ๊ทธ๋ฌ๊ณ , ๊ฐ์ด ๊ณต๋ถํ๋ ๋ช๋ช ๋ถ๋ค๋ ๊ทธ๋ฌํ ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค.
์ผ๋จ, ์ฃผ๋ํ๋์ ๊ฐ์ฒด์งํฅ์ ๋ํด ์ดํด๊ฐ ๋์๋ค๊ณ ํ๋จ๋๋ ๋ฐ ์ ๊ฐ ์ดํดํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๋ถ๋ค๊ป ์๊ฐ ํ๋ฉด์ ๋ง์ ๋ถ๋ค์ด ์ ๋ณด๋ค๋ ์ข ๋ ์ฝ๊ฒ ๊ฐ์ฒด์งํฅ์ ์ดํดํ์๊ธธ ๋ฐ๋ผ๋ ๊ฒ์ด์์.
์ด ๊ธ์ ๊ฐ๋ ์์ฃผ๋ก ์์ฑํ ๊ธ ์ ๋๋ค. ์ธํฐ๋ท ๊ฐ์ ๋ฑ์ ํตํด ์๋ฐ์ ๊ฐ์ฒด์งํฅ์ ๊ณต๋ถ ํ๋๋ฐ, ์ ์ดํด๊ฐ ์ ๊ฐ์ ๋ค๋ฉด ๋์์ด ๋ ๊ฒ์ด์ง๋ง, ์์ ๋ด์ฉ์ ๋ชจ๋ฅด๋ ์ํ์์๋ ๋ค์ ์ด๋ ค์ธ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
๊ทธ๋ผ ๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค!
๐ Java Code์์ ๊ฐ์ฒด(๊ฐ์ฒด์งํฅ)
๐์ค๋ช ํ๊ธฐ์ ์
๋ณธ๊ฒฉ์ ์ธ ์ค๋ช ์ ์ ์จ์ ๊ฐ๊ฐ์ ๋ช ์นญ์ ์ ๊ฐ ์ดํดํ๊ธฐ ์ฌ์ ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์๊ฐ๋ฅผ ํด ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค. ๋ง์ ์์๋ค์ด ์๋๋ฐ, ์ ๊ฐ ๊ต์ก ๋ฐ์ผ๋ฉด์ ์์๋ก ๋ค์๋ ๊ฒ๊ณผ ์ ๊ฐ ์ดํดํ๊ธฐ ์ฌ์ ๋ ์์๋ฅผ ๋๊ฐ์ง๋ก ์ค๋ช ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ ์ฒซ๋ฒ์งธ. Class(๊ฐ์ฒด) ํน์ ์ธ์คํด์ค
๊ต์ก์ ์์: ์ ํ ์ค๊ณ๋
์ฃผ๋ํ๋์ ์์: ํ์ฌ (Main์ด ์๋ ๋ํ, ํ์ผ ์ ๋ชฉ๋ช ๊ณผ ๋์ผํ Class๋ช ์ ๊ฐ์ง Class๋ฅผ ์ฐ๋ฆฌ ํ์ฌ๋ผ๊ณ ์๊ฐ
๐ ๋๋ฒ์งธ. ํจ์ (Method)
๊ต์ก์์์ ์์: ๅฝๆธ. ์ฆ, ๋ฌผ๊ฑด์ ๋ด๋ ์์์ ์ ๋ ฅ(๋งค๊ฐ๋ณ์)๊ฐ์ ๋ฃ์ด ์ถ๋ ฅ(Return)๊ฐ์ ์ป๋ ์์.์ฃผ๋ํ๋์ ์์: 1) ๊ณ์ฐ๊ธฐ. ์ ๋ ฅ(๋งค๊ฐ๋ณ์)๊ฐ์ ์ ๋ ฅ์ ๋ฐ์ ๊ทธ ๊ฒฐ๊ณผ์ธ ์ถ๋ ฅ(Return)์ ๋ณด์ฌ์ฃผ๋ ๊ณ์ฐ๊ธฐ. ์ด ๊ณ์ฐ๊ธฐ๋ ๋ฌธ์๋ ๊ณ์ฐ์ด ๊ฐ๋ฅํ๋ฐ, ์ปดํจํฐ๋ผ๋ ๊ณ์ฐ๊ธฐ๋ ๋ฌธ์๋ ์ฌ์ค 0๊ณผ 1๋ก ์ฒ๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
2) ๊ทธ ํ์ฌ์ ๊ฐ ํ. ํ์ฌ๋ผ๋ Class(๊ฐ์ฒด)์๋ ํ์ด ์๊ณ , ๊ทธ ํ์๋ ํ์์ด ์กด์ฌ. Main์ด๋ผ๋ Method๋ ์ฐ๋ฆฌํ์ฌ์ด๊ณ , ์ด ์ผ์ ํ์ฒญ์ ์ฃผ์ด ๋ค๋ฅธ ํ์ฌ(Class)์๊ฒ ์ธ์ฃผ๋ฅผ ์ฃผ๋๋ฐ, ๊ทธ ์ธ์ฃผ ์ ์ฒด ์์๋ ํ์ด ์๊ณ , ํ์์ด ์กด์ฌ.
๐ ์ธ๋ฒ์งธ. ๋ณ์
๊ต์ก์์์ ์์: ๋ฌผ๊ฑด์ ๋ด๋ ํ๋์ ๊ทธ๋ฆ
์ฃผ๋ํ๋์ ์์: ์ด๋ค ํ์ฌ์ ํ์ฌ์ 1๋ช . ์ด ํ์ฌ์์ ํ๋ฃจ์ ํ๋์ ์ผ๋ง ์ฒ๋ฆฌ ๊ฐ๋ฅ.
๐ ๊ฐ์ฒด์งํฅ ์ธ์ด๋?
๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(์ ์ฐจ์งํฅ ์ธ์ด)์ ๋ช ๊ฐ์ง ์๋ก์ด ๊ท์น ์ถ๊ฐ
์ฅ์ : ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ - ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ์ด์ฉํ ์ ์๋ค.
์ฝ๋ ๊ด๋ฆฌ ์ฉ์ด - ์ฝ๋๊ฐ์ ๊ด๊ณ๋ฅผ ์ด์ฉ ์ ์ ๋ ธ๋ ฅ์ผ๋ก ์ฝ๊ฒ ์ฝ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ
์ ๋ขฐ์ฑ์ด ๋์ ํ๋ก๊ทธ๋๋ฐ - ์ ์ด์์ Method๋ฅผ ์ด์ฉ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ณ , ์ฝ๋์ ์ค๋ณต ์ ๊ฑฐ๋ก ์ฝ๋์ ๋ถ์ผ์น๋ก ์ธํ ์ค๋์ ๋ฐฉ์ง
๐๊ฐ์ฒด ์์ฑ ์์
1) Class ์ ์
2)๊ฐ์ฒด ์์ฑ (new)
3) ๊ฐ์ฒด์ ๊ฐ์ฒด ๊ฐ์ ์ํธ ์์ฉ( ์๋ก ํธ์ถ, ์๋ต)
- ๊ฐ์ฒด ์์๋ ํ๋์ ๋ฉ์๋๊ฐ ์๋ค. ('๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ ๋ฌ๊ณผ ๋ฐํ์ ํตํด ๊ฐ์ ์ฃผ๊ณ ๋ฐ๋๋ค'๋ฅผ ์ํธ ์์ฉ์ด๋ผ ์นญํจ.)
4) ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ (์์๊ณผ ๊ตฌํ) => ๋ฉ์๋ ์ค์ฌ => ํจ์ํ ์ธ์ด์ ๋๋
- ๋ฐ์ดํฐ๋ ๋ณ์์๋ง ๋ฃ์ ์ ์๊ณ , ๊ธฐ๋ฅ์ ํจ์๋ก ์ด์ฉ.
- ์์์ด๋? ๊ธฐ์กด์ ํจ์๊ฐ ์๋๋ฐ, ํ์์ ์ํด ํจ์๋ฅผ ์ถ๊ฐ๋ก ๋ง๋ค๊ฒ ๋ค. ๋ผ๋ ์๋ฏธ
- ๊ตฌํ(Implements)์ด๋? ์์ง ๋ง๋ค์ง ์์ ํจ์๋ฅผ ๋ง๋ค๊ฒ ๋ค๋ ์๋ฏธ.
5) Class์์ ๊ฐ์ฒด๋ฅผ ์ ์ ํ ๋, ์ ํ๋ฒํธ์ ๊ฐ์ด ๊ฐ๊ฐ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๋ค๋ฉด Static์ ๋ถ์ด์ง ์๋๋ค. ์ฆ, ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ ๊ฐ๋๋ค๋ฉด Static์ ๋ถํ์ฃผ์ด์ผ ํ๋ค.
6) ํ๋๋ ๊ฐ์ง๊ณ ์๋ค๋ผ๋ ์๋ฏธ์ด๊ณ , ๋ฉ์๋๋ ์ด๋ค ๊ธฐ๋ฅ์ ํ ์ ์๋ค๋ผ๋ ์๋ฏธ
- ํ๋๋ ์ธ์คํด์ค ๋ณ์์ด๋ฉฐ, ์ง์ญ ๋ณ์๊ฐ ์๋ ์ ์ญ ๋ณ์์ด๋ค. ์ฃผ๋ํ๋์ ๊ทธ ํด๋์ค์ ์ง์์ผ๋ก ์ดํด.
- ๋ฉ์๋๋ ๊ทธ ํด๋์ค์ ํ์ด๋ค. ํ์ ํ์ ๊ฐ๊ฐ์ด ์๊ธฐ์ ์ญํ ์ ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ค.
- ๊ฒฐ๊ตญ ์คํ์ ํจ์๋ก ํ๋ค.
7) ์๋ํ(์บก์ํ)
- Main์์ ์๋ํ์ง ์์ Class์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์๋๋ค. ๊ฐ๋ฐ์์ ์ด๊ฒ์ ๋ง์์ผ ํ๋ค.
- ๊ฐ์ฒด๋ช ์ ์ (.)์ ์ฐ์์ ๋, ๋์ค๋ ๋ณ์๋ช ๋ค์ด๋, ๊ธฐ๋ฅ๋ค์ด ์ ๋์ค๊ฒ ํ๊ฒ ๋ค๋ ๊ฒ.
- Member ์ค ์ธ๋ถ๋ก ๋ ธ์ถ๋์ง ์์์ผ ํ๋ ๊ฒ์ ์ ๊ทผ๊ถํ, ์ ๊ทผ ์ง์ ์ ํ ์ ์๋ ๊ฒ.
=> Public: ๊ณต๊ฐ(Method์ ์ฌ์ฉ)
=> Private: ๋น๊ณต๊ฐ(Field์ ์ฌ์ฉ)
=> Protected: ์ ํ์ ๊ณต๊ฐ
=> (defualt): ์ ํ์ ๊ณต๊ฐ
์์ ๋ํ ๋ด์ฉ์ ์๋ ์ ๊ทผ ์ ์ด์์์ ์์ธํ ์ค๋ช ํ๋๋ก ํ ๊ฒ์ด์์!
8) Classํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๊ทธ Class์์ ํ๋๋ฅผ ๊ตฌ์ฑํ๋ฉด ๊ทธ Class๋ ํ๋๋ฅผ ์์กด. ์์กด์ฑ์ด๋ ์์ผ๋ฉด ์๋๋ Class(๊ฐ์ฒด)๋ฑ์ด ์๋ค๋ผ๋ ์๋ฏธ.
๐ ๊ฐ์ฒด์ ์ธ์คํด์ค
ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ํด๋์ค์ ์ธ์คํด์คํ๋ผ๊ณ ํ๋ฉฐ, ์ด๋ค ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ฅผ ํด๋์ค์ ์ธ์คํด์ค๋ผ๊ณ ํฉ๋๋ค.
๊ฐ์ฒด: ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ๋ํํ๋ ์ฉ์ด
์ธ์คํด์ค: ํน์ ํด๋์ค๋ก ๋ถํฐ ์์ฑ๋ ๊ฐ์ฒด
๐ ๊ฐ์ฒด์ ๊ตฌ์ฑ์์ - ์์ฑ๊ณผ ๊ธฐ๋ฅ
์์ฑ(Property): ๋ฉค๋ฒ๋ณ์, ํน์ฑ, ํ๋(์ธ์คํด์ค ๋ณ์), ์ํ
๊ธฐ๋ฅ(Function): Method, ํจ์, ํ์
/**
* ์ถ์ฒ: ์๋ฐ์ ์ ์
*/
class Tv { // Tv๋ผ๋ ์ธ๋ถ ์
์ฒด
// ๋ณ์ = Tvํ์ฌ์ ์ง์๋ค์ ํน์ฑ๊ณผ ์ง์๋ช
. (Data Type = ์ง์ ํน์ฑ, ๋ณ์ = ์ง์๋ช
)
String color; // ์๊น
boolean power; // ์ ์์ํ
int channel; // ์ฑ๋
// Method = Tv๋ผ๋ ํ์ฌ์ ๊ฐ ํ.
void power() {
power = !power;
}
void chanelUp() {
channel ++;
}
void channelDonw() {
channel --;
}
์์ฑ์ ํฌ๊ธฐ, ๊ธธ์ด, ๋์ด, ์์, ๋ณผ๋ฅจ, ์ฑ๋ ๋ฑ์ด ๋ ์ ์๊ณ , ๊ธฐ๋ฅ์ ์ผ๊ธฐ, ๋๊ธฐ, ๋ณผ๋ฅจ ๋์ด๊ธฐ / ์ค์ด๊ธฐ, ์ฑ๋ ๋ณ๊ฒฝํ๊ธฐ ๋ฑ์ด ์์ต๋๋ค.
๐ ์ธ์คํด์ค์ ์์ฑ๊ณผ ์ฌ์ฉ
์ ์จ ์ฃผ๋ํ๋์ ํด๋์ค๋ฅผ ํ์ฌ๋ผ๊ณ ์๊ฐ์ ํ๊ณ , ๊ต์ก์์๋ ์ค๊ณ๋๋ผ๊ณ ํ์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋์ผํ๊ฒ ์ค๋ช ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
/**
* ์ถ์ฒ: ์๋ฐ์ ์ ์
*/
// [ํด๋์ค๋ช
] [๋ณ์๋ช
] // ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ ์ฐธ์กฐ๋ณ์๋ฅผ ์ ์ธ
// ์ธ์ฃผ ์
์ฒด๋ฅผ ๊ด๋ฆฌํ ์ง์ ์ฑ์ฉ
// [๋ณ์๋ช
] = new [ํด๋์ค๋ช
] // ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑ ๋ค, ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์ฐธ์กฐ ๋ณ์์ ์ ์ฅ
// ์ด๋ ์
์ฒด(ํด๋์ค)์ ์ธ์ฃผ ํ์ฒญ ๊ณ์ฝ์๋ฅผ ์์ฑํ ๋ค ๋ณ์๊ฐ ๊ทธ ํ์ฌ ์ฐ๋ฝ์ฒ ๋ณด๊ด
Tv t; // Tv ํด๋์ค ํ์
์ ์ฐธ์กฐ๋ณ์ t๋ฅผ ์ ์ธ
// Tv ํน์ฑ์ ๊ฐ์ง t๋ผ๋ ์ง์์ ์ธ์ฃผ ์
์ฒด ๊ด๋ฆฌ๋ฅผ ์ํด ์ฑ์ฉ
t = new Tv(); // Tv์ธ์คํด์ค๋ฅผ ์์ฑ. ์์ฑ๋ Tv ์ธ์คํด์ค์ ์ฃผ์ t์ ์ ์ฅ
// t๋ผ๋ ์ง์์ด Tvํ์ฌ์ ์ธ์ฃผ ํ์ฒญ ๊ณ์ฝ์ ๋งบ์ด Tv ์
์ฒด์ ์ฐ๋ฝ์ฒ๋ฅผ ๋ณด๊ด
TvTest.java
/**
*์ถ์ฒ: ์๋ฐ์ ์ ์
*/
Class Tv {
// Tv์ ์์ฑ(๋ฉค๋ฒ๋ณ์)
String color; // ์์
boolean power; // ์ ์์ํ(on/off)
int channel; // ์ฑ๋
// Tv์ ๊ธฐ๋ฅ(๋ฉ์๋)
void power() { // TV๋ฅผ ์ผ๊ฑฐ๋, ๋๋ ๊ธฐ๋ฅ ๋ฉ์๋
power = !power;
}
void chaanelUP() { // TV์ ์ฑ๋์ ๋์ด๋ ๊ธฐ๋ฅ ๋ฉ์๋
++channel;
}
void channelDown() { // TV์ ์ฑ๋์ ๋ฎ์ถ๋ ๊ธฐ๋ฅ ๋ฉ์๋
--channel;
}
}
/* ########################### Main ############################### */
class TvTest {
public static void main(String[] args) {
Tv t; // Tv๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํ ๋ณ์ t ์ ์ธ
t = new Tv(); // Tv๊ฐ์ฒด(์ธ์คํด์ค) ์์ฑ.
t.channel = 7; // Tv๊ฐ์ฒด(์ธ์คํด์ค)๋ด์ channel ๋ณ์์ 7 ๊ฐ ์
๋ ฅ.
t.channelDown(); // Tv๊ฐ์ฒด(์ธ์คํด์ค)๋ด์ channelDown(); ๋ฉ์๋ ํธ์ถํ์ฌ ๊ทธ ๋ฉ์๋์ ๊ธฐ๋ฅ ๋์
System.out.println("ํ์ฌ ์ฑ๋์ " + t.channel + "์
๋๋ค.");
}
}
/* ############################ ์คํ ๊ฒฐ๊ณผ ############################ */
// ํ์ฌ ์ฑ๋์ 6 ์
๋๋ค.
๐Class ์ ์
Class๋ผ๋ ์์ฝ์ด๋ก ์ ์๋ ๋ค {} ์ค๊ดํธ๊ฐ ์๋ ๊ฒ์ด๋ฉฐ, ์๊ธ์๊ฐ ๋๋ฌธ์ ์๋ฃํ์ ํ๋์ด๋, ๊ธฐ๋ณธํ์ ์๋๊ณ , ๋ณตํฉํ์ผ๋ก ๋ถ๋ฆฌ๋ ๊ฒ์ ๋๋ค. ์์ฒญ์ ํ๋ ์ชฝ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด Main Method์์ ์ด๋ค ๊ฐ์ฒด(Class)๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด Main์ด ํธ์ถํ๋ ์ชฝ์ด ๋ฉ๋๋ค.
๊ฒฐ๊ตญ ํด๋์ค์ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์ ์ ํด ๋์ ๊ฒ์ด๊ณ , ๊ทธ ์ฉ๋๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ, ์ฌ์ฉ์ด ๋ฉ๋๋ค.๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฒด์ ์ ์๋ ๋ฌด์์ผ๊น์? ๊ฐ์ฒด๋ ์ค์ ๋ก ์กด์ฌํ๋ ๊ฒ. ์ฌ๋ฌผ ๋๋ ๊ฐ๋ ์ด๋ฉฐ, ๊ทธ ์ฉ๋๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ฅ๊ณผ ์์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ฌ์ฉ์ Type: ์ํ๋ Type์ ๋ง๋ค ์ ์์ต๋๋ค.
ํด๋์ค๋ ์ค๊ณ๋ ํน์ ํ์ฌ๋ก ๋น์ ํ ์ ์์ต๋๋ค. ๋ํ, ๋ฐ์ดํฐ์ ํจ์๋ฅผ ๊ฐ์ง๊ณ ์๊ตฌ์. ์ฌ์ฉ์ ์ ์ Data Type ์ ๋๋ค.
โ๏ธ ์์
int hour:
int min;
int sec;
// ์ธ ๊ฐ์ ์๊ฐ์ ์ ์ฅํ๋ ค๋ฉด 3๊ฐ ๋ณ์๊ฐ ํ์ํ ๊ฒ์ด์์.
// ๋ง์ฝ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค๋ฉด ์๊ฐ ๋ฐ๋ก ๋ถ ๋ฐ๋ก ๊ฐ๊ฐ์ ๋ฐฐ์ด์ด ํ์ํ๊ฒ ์ง์?
// Class๋ฅผ ๋ง๋ค๋ฉด ํ๋์ Class๋ก ์, ๋ถ, ์ด๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๊ฒ์ด์์.
################## Time Class ์์ฑ ########################
class Time {
int hour;
int min;
int sec;
} // Time Class End
################## Test Class ์์ฑ ########################
class Test {
public static void main(String[] args) {
Time t = new Time();
} // Main End
} // Test Class End
1. ๋ณ์: ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
2. ๋ฐฐ์ด: ๊ฐ์ ์ข ๋ฅ์ ์ฌ๋ฌ ๋ฐ์ดํฐ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
3. ๊ตฌ์กฐ์ฒด: ์๋ก ๊ด๋ จ๋ ์ฌ๋ฌ ๋ฐ์ดํฐ ์ข ๋ฅ ๊ด๊ณ ์์ด ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ
4. ํด๋์ค: ๋ฐ์ดํฐ์ ํจ์์ ๊ฒฐํฉ(๊ตฌ์กฐ์ฒด + ํจ์)
์ฐธ๊ณ ํ ๋ฐฐ์ด์ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋, ์ฐธ์กฐํ ๋ฐฐ์ด๋ช ์์ ์๋ฃํ ํ์ ์ ์ ์ง ์์์ผ ํฉ๋๋ค!
์ ๊ทธ๋ฌ๋ฉด ์๋ฃํ ์ ๋ง๋๋ค๊ณ , ์์ธ๊ฐ ๋ฐ์ํ๊ฒ ๋ ๊ฒ์ด์์!
๐ ๋ณ์์ ๋ฉ์๋
๋ณ์๋ ์๋ฃํ์ด ์ ํด์ ธ์ผ ํ๋ฉฐ, ๊ธฐ๋ณธํ(Primitive Type)์ธ ๊ฒฝ์ฐ '๊ฐ์ด ์ผ๋ง๊ฐ ์๋ค'๋ผ๋ ์๋ฏธ์ด๊ณ , Classํ(์ฐธ์กฐํ - Reference Type)์ธ ๊ฒฝ์ฐ ๋ณ์์์ ๊ฐ์ด ์๋๊ณ , ์ฃผ์๊ฐ์ด ๋ค์ด๊ฐ ์๊ฒ ๋ฉ๋๋ค. ์๋ฃํ์ด ๋ค๋ฅด๋ฉด ๋น์ฐํ ์ฒ๋ฆฌ๊ฐ ๋ค๋ฅด๊ฒ ์ง์?
์ฆ, ๊ธฐ๋ณธํ ๋ณ์๋ ๊ฐ ํ๋๋ฅผ ์ ์ฅํ๋ ๋ณ์์ด๊ณ , int num = 10;์ด๋ผ๊ณ ํ๋ค๋ฉด num์ 10์ด๋ค๋ผ๊ณ ํํํ ์ ์๋ ๊ฒ์ด์์.
์ฆ, ๊ธฐ๋ณธํ ๋ณ์๋ ๊ทธ ์์ฒด๊ฐ ๊ฐ์ด๋ผ๊ณ ์๊ฐํ ์ ์๋ต๋๋ค.
์ฐธ์กฐํ ๋ณ์๋ ๊ฐ์ ์์น(์ฃผ์)๋ฅผ ์ ์ฅํ๋ ๋ณ์์์. String๊ณผ ๊ฐ์ด ์ฒซ๊ธ์๊ฐ ๋๋ฌธ์์ธ ๊ฒ์ Classํ(์ฐธ์กฐํ) ๋ณ์๋ผ๊ณ ํ๋ต๋๋ค.
string obj = [์ฃผ์๋ฅผ ์ ์ฅ]
์์ ๋ป์ obj์ ๊ฐ๋ฉด String์ด ์๋ค๋ผ๊ณ ํํํ ์ ์๊ฒ ๋ค์.
์ (.) ์ฐ์ฐ์ Class(์ฐธ์กฐ)ํ ๋ณ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ ์ญ์ ์ฐ์ฐ์ ์ ๋๋ค. ์ ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ผ๋ก ๊ฐ์ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฒ์ ๋ณด์๋ผ! ๋ผ๊ณ ํํํ ์ ์์ผ๋ฉฐ, ์ฐธ์กฐํ ๋ณ์๋ช ์ ์ ์ ์ฐ๊ณ ๋์ค๋ ๊ฒ๋ค ์ค ์ดํด๋ฆฝ์ค ์์์ ๋ณด์ด๋ ์ด๋ก์ ๋๊ทธ๋ผ๋ฏธ ํ์๋ Method๋ฅผ ๋ํ ๋ ๋๋ค.
println(); ์์ ์ฐธ์กฐํ ๋ณ์๋ช ์ ์ถ๋ ฅํ๋ผ๊ณ ํ์ ๋, ๋์ค๋ ๊ฒ์ .toStirng();์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค. ๊ธฐ๋ณธํ ๋ณ์๋ ๊ทธ ๋ณ์๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ์ง์ ์ฐ์ง๋ง, ์ฐธ์กฐํ ๋ณ์๋ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅด๋ค๋ ์ ๊ธฐ์ต ํด ์ฃผ์ธ์!
Class๋ ๊ฐ๋ฐ์ํ๋ ์ฌ๋์ด ๋ง๋ ์๋ฃํ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ฌ๋์ด๋, ์ปดํจํฐ๋ ๊ทธ ์์น๋ฅผ ์ ์๊ฐ ์์ต๋๋ค. ์ด ๋๋ฌธ์ Class Method๋ฅผ ํธ์ถํ ๋ (.) ์ ์ ์ฐ๋ ํํ์ด ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค. ์ด ์ ์ด๋ผ๋ ๊ฒ์ ์ ์ด์ฃผ๋ฉด ๊ทธ ์ฃผ์๋ก ๊ฐ๋ฉด ๊ทธ ์์ ์ด๋ค ์๋ฃํ์ด ์๋์ง ๋ณด๊ฒ ๋ฉ๋๋ค.
[Class Type] [๋ณ์๋ช ] = new [Class Type (๊ฐ์ฒด๋ช ํน์ ์์ฑ์๋ช ์ด๋ผ๊ณ ๋ํจ)] ์ด๋ด ๋ ' Class Type์ ํด๋นํ๋ ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ค์ด ๋ณ์์ ๋ฃ๊ฒ ๋ค'๋ผ๋ ์๋ฏธ๋ก ์ดํด ํ์๋ฉด ํธํ๊ฒ ๋ค์!
โ๏ธ ์์
Car go = new Car();
'Car Type์ ๊ฐ๋ ๋ณ์ go์ Car ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฃ๋๋ค'๋ผ๋ ์๋ฏธ ์ ๋๋ค.
๐ฌ ๋น์
๊ต์ก์ฉ ์์: Car Type์ ๊ฐ๋ ํ ๊ฐ์ ๊ฐ์ ์ ์ฅํ๋ ์์์ธ go์ Car()๋ผ๋ ์ ํ ์ค๊ณ๋๋ฅผ ๋ง๋ค์ด ๋ฃ๊ฒ ๋ค.
์ฃผ๋ํ๋์ ์์: Car Type์ ๊ฐ๋ ์ฐ๋ฆฌ ํ์ฌ ์ง์ go๊ฐ ์ธ์ฃผ ์ ์ฒด์ธ Car()์ ํ์ฒญ ๊ณ์ฝ์ ๋งบ์ด ๊ทธ ์ ์ฒด ์ฐ๋ฝ์ฒ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Class Variables {
// ํด๋์ค ์์ญ (์ ์ธ๋ง ๊ฐ๋ฅํ๋ฉฐ, ์ด๊ธฐํ ๋ถ๊ฐ)
int iv; // ์ธ์คํด์ค ๋ณ์ (ํ๋)
static int cv; // ํด๋์ค ๋ณ์, static๋ณ์, ๊ณต์ ๋ณ์ (์ธ์คํด์ค ๋ณ์ ์์ static์ ๋ถํ๋ฉด ํด๋์ค ๋ณ์)
// ๋ฉ์๋ ์์ญ
void method() {
int lv = 0; // ์ง์ญ ๋ณ์
} // Method End
} // Class End
๐ ์ธ์คํด์ค ๋ณ์(ํ๋) - Instance Variable (Filed)
ํด๋์ค ์์ญ์ ์ ์ธ๋๋ฉฐ, ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑ ์ ๋ง๋ค์ด ์ง๋๋ค. ์ธ์คํด์ค ๋ณ์์ ๊ฐ์ ์ฝ์ด ์ค๊ฑฐ๋, ์ ์ฅํ๊ธฐ ์ํด ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
ํ๋๋ ๋ ๋ฆฝ์ ์ธ ์ ์ฅ๊ณต๊ฐ์ ๊ฐ๊ณ , ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์ธ์คํด์ค๋ง๋ค ๊ณ ์ ํ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ ์์ฑ์ ์ธ์คํด์ค ๋ณ์๋ก ์ ์ธํด์ผ ํฉ๋๋ค.
๐ ํด๋์ค ๋ณ์(Class Variable)
์ธ์คํด์ค ๋ณ์(ํ๋)๋ช ์์ static์ ๋ถํ๊ธฐ๋ง ํ๋ฉด ํด๋์ค ๋ณ์๊ฐ ๋ฉ๋๋ค. ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณตํต๋ ์ ์ฅ๊ณต๊ฐ(๋ณ์)๋ฅผ ๊ณต์ ํ๊ฒ ๋ฉ๋๋ค.
ํ ํด๋์ค์ ๋ชจ๋ ์ธ์คํด์ค๋ค์ด ๊ณตํต ๊ฐ์ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ ํด๋์ค๋ณ์๋ก ์ ์ธ ํฉ๋๋ค.
ํด๋์ค ๋ณ์๋ ์ธ์คํด์ค(๊ฐ์ฒด)๋ฅผ ์์ฑํ์ง ์๊ณ , (new [๊ฐ์ฒด๋ช ])์ ํ์ง ์๊ณ ๋, ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ณ , 'ํด๋์ค๋ช .ํด๋์ค๋ณ์' ํ์์ผ๋ก ์ฌ์ฉ ๋ฉ๋๋ค.
๊ฐ์ ํ๋ก๊ทธ๋จ ๋ด ์ด๋์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์ ์ฐ๋ณ์(Global Variable)์ ์ฑ๊ฒฉ์ ๊ฐ์ต๋๋ค.
๐ ์ง์ญ๋ณ์(Local Variable)
๋ฉ์๋ ๋ด์ ์ ์ธํ๊ณ , ๋ฉ์๋ ๋ด์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ, ๋ฉ์๋๊ฐ ์ข ๋ฃ๋๋ฉด ๊ฐ์ด Memory์์ ์๋ฉธ๋์ด ๋ฒ๋ฆฝ๋๋ค.
class Card {
// ์ธ์คํด์ค ๋ณ์(ํ๋)
String kind; // ๋ฌด๋ฌ
int number; // ์ซ์
// ํด๋์ค(๊ณตํต) ๋ณ์
static int width = 100; // ํญ
static int height = 250; // ๋์ด
class Test {
static void main(Stirng[] args) {
Card c = new Card();
// ์ธ์คํด์ค ๋ณ์์ ๊ฐ ๋ฃ๊ธฐ
c.kind = "HEART";
c.number = 5;
// ํด๋์ค ๋ณ์์ ๊ฐ ๋ฃ๊ธฐ
Card.width = 200;
Card.height = 300;
// ํด๋์ค ๋ณ์๋ ํด๋์ค๋ช
.~~๋ก ํธ์ถ
// ์ธ์คํด์ค(ํ๋) ๋ณ์๋ ์ฐธ์กฐ๋ณ์.ํ๋๋ช
์ด์ง๋ง, ํด๋์ค๋ ํด๋์ค๋ช
. ์ด๋ค.
๐ return๋ฌธ
return๋ฌธ์ ํ์ฌ ์คํ์ค์ธ ๋ฉ์๋ ์ข ๋ฃ ๋ค ํธ์ถํ ๋ฉ์๋๋ก ๋๋์ ๊ฐ๋๋ค. ๋ฐํ ํ์ ์ด void์ธ ๊ฒฝ์ฐ ๋ฐํ๊ฐ์ด ์๋ค๋ ์๋ฏธ์ด๊ธฐ์ return์ ๋ช ์ํ์ง ์์๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋๋ฐ, ๊ทธ ์ด์ ๋ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก return ; ์ ์ถ๊ฐ ํด์ฃผ์๊ธฐ ๋๋ฌธ ์ ๋๋ค.
void printGugudan(int dan) {
for(int i = 1; <= 0 ; ++i) {
Sysstem.out.printf("%d * %d = %d%n", dan, i, dan * i);
} // for End
return; // ๋ฉ์๋์ ๋ฐํํ์
์ด void์์ผ๋ก ์๋ต ๊ฐ๋ฅ ํฉ๋๋ค.
} // printGugudan End
###################### ๋ฐํ ํ์
์ด void๊ฐ ์๋ ๊ฒฝ์ฐ #############################
int multplay (int x, int y) {
int result = x * y;
return result; // ๋ฐํ ํ์
์ด void๊ฐ ์๋๋ฏ๋ก, ์๋ต ๋ถ๊ฐ
} // multplay Mthod End
๐๋ฐํ๊ฐ(return value)
return๋ฌธ์ ๋ฐํ๊ฐ์ผ๋ก ์ฃผ๋ก ๋ณ์๊ฐ ์ค๊ธด ํ๋๋ฐ, ํญ์ ๊ทธ๋ฐ๊ฒ์ ์๋ ๊ฒ์ด์์.
int add (int x, int y) {
int result = x + y;
return result;
}
#############################
int add (int x, int y) {
return x + y;
}
// ์์ ๊ฐ์ด ์์์ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ ๋ณ์๊ฐ ์๋ ๋ฐ๋ก ๊ณ์ฐ์์ ๋ฃ์ด ๋ฐํํ ์๋ ์๋ ๊ฒ์ด์์!
๋ฐํ ํ์ (return Type)์ด ์๋ ๋ฉ์๋๋ ์ข ๋ฃ ์ ๊ฒฐ๊ณผ๊ฐ์ ์์ ์ ํธ์ถํ ๋ฉ์๋ ๋ฑ์๊ฒ ๋ฐํ ํ๋ ๊ฒ์ด์์.
main()์ด firstMehotd()๋ฅผ ํธ์ถํ๊ณ , firstMethod()๊ฐ secondMethod๋ฅผ ํธ์ถํ๊ณ ์๋ค์. ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๋, ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ผ๋ ค๋ฉด ๋ฉ์๋ ์์ static ๋ถ์ด๋ฉด ๋๋ค๋ ๊ฒ ์์ง ์์ผ์ จ์ฃ ?
๐๋งค๊ฐ๋ณ์ ์ ํจ์ฑ ๊ฒ์ฌ
๋ฉ์๋ ๊ตฌํ๋ถ(Body) { } ์ค๊ดํธ ์์ ๋ด์ฉ์ ์์ฑ ์ ๋งค๊ฐ ๋ณ์ ๊ฐ์ด ์ ์ ํ ๊ฒ์ธ์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด์์.
๋ฉ์๋๋ฅผ ์์ฑ ์ ํธ์ถ ์ชฝ์์ ์ ์ ํ ๊ฐ์ ๋๊ฒจ ์ฃผ๊ฒ ์ง?๋ผ๋ ์ฐฉ๊ฐ์ ์ ๋๋ก ํ๋ฉด ์๋๋ ๊ฒ์ด์์. Type๋ง ๋ง์ผ๋ฉด ์ด๋ค ๊ฐ๋ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ๋์ด์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ์๋ ์์ฑ ์ ๋งค๊ฐ๋ณ์ ์ ํจ์ฑ ๊ฒ์ฌ ์ฝ๋ ์์ฑ์ ํ์ ๋๋๋ค!
๐๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์์ ์ฐธ์กฐํ ๋งค๊ฐ๋ณ์
์๋ฐ์์๋ ๋ฉ์๋ ํธ์ถ ์ ๋งค๊ฐ๋ณ์๋ก ์ง์ ํ ๊ฐ์ ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ๋ณต์ฌํด์ ๋๊ฒจ ์ฃผ๋ ๊ฒ์ด์์.
๋งค๊ฐ๋ณ์์ ํ์ ์ด ๊ธฐ๋ณธํ(primitive) ์ผ ๋ ๊ธฐ๋ณธํ ๊ฐ์ด ๋ณต์ฌ๋๊ฒ ์ง๋ง, ์ฐธ์กฐํ(reference)์ด๋ฉด ๊ฐ์ฒด์ ์ฃผ์๊ฐ ๋ณต์ฌ ๋๋ต๋๋ค.
๊ธฐ๋ณธํ ๋งค๊ฐ๋ณ์: ๋ณ์์ ๊ฐ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅ.
์ฐธ์กฐํ ๋งค๊ฐ๋ณ์: ๋ณ์์ ๊ฐ ์ฝ๊ณ ๋ณ๊ฒฝ ๊ฐ๋ฅ.
๐ Class ์ ์ธ
ํ๋์ ํ๋ก๊ทธ๋จ(ํ๋ก์ ํธ)์ ์ฌ๋ฌ ๊ฐ์ Class(๊ฐ์ฒด)๊ฐ ์ฌ์ฉ๋๊ฒ ๋ฉ๋๋ค. ์ด๋ฐ ์ด์ ๋ก ๊ฐ๊ฐ์ Class์ ์ ์ธ๋ Member ๊ฐ์ ์๋ก ์ฝํ์ด ๋ฐ์ํ๊ฒ ๋๋๋ฐ์. ์ด ๋, ์์ฒญ(Class - ์ ๋ฌ)๊ณผ ์๋ต (return - ๋ฐํ)์ด ๋ฐ์๋๊ฒ ๋๋๋ฐ, ์์ฒญ์ ๊ฐ์ฒด์ 'Method๋ฅผ ํธ์ถํ์ฌ ()์๊ดํธ์ ์ธ์(๋งค๊ฐ๋ณ์)๊ฐ์ ์ ๋ฌํ๊ฒ ๋ค๋ ์๋ฏธ์ ๋๋ค. ๊ฐ์ฒด๋ ์๋ก ์ํธ์์ฉ์ ํ๋ฉฐ, '๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค'๋ผ๊ณ ํํํฉ๋๋ค.
๐ ์ ๊ทผ ์ง์ ์ ํน์ ์ ๊ทผ ์ ํ์(Access Modifier)
ํ๋(Class ๋ณ์) ์ ์ฅ์์ ๋ดค์ ๋, ์์ฒญํ๋ ์ชฝ์์ ๋์๊ฒ ํจ๋ถ๋ฌ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ๊ถํ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ฅผ ๋น์ ๋ก ๋ค์๋ฉด ํ๋ ์ ์ฅ์์ ๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฌผ๊ฑด์ ์๋ฌด๋ ์์ ๊ฐ์ ธ๊ฐ๊ณ , ๋ฐ๊พธ๊ณ ํ๋ฉด ๊ธฐ๋ถ์ด ๋์๊ฒ ์ง์? ๊ทธ๋์ ์ด๊ฒ์ ๋ชปํ๋๋ก ๋ด ๋ฌผ๊ฑด์ ์จ๊ธฐ๊ธฐ ์ํด Class(๊ฐ์ฒด)์์ ์ ์ธํ ๋ณ์(ํ๋)๋ฅผ ์๋ํ๋ฅผ ํ์ฌ ๋ณ์ ์๋ฃํ ์์ Private๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค. ๋จ, ๋ชจ๋ Methodsms public์ผ๋ก ์ ์ธํ๋๊ฒ ์ข๋ต๋๋ค. (์ด๋ณด์๋ง!)
์ ๊ทผ ์ ์ด์๋ public๊ณผ private์ธ์๋ ๋๊ฐ์ง๊ฐ ๋ ์์ต๋๋ค. protected์ default๊ฐ ๊ทธ๊ฒ์ ๋๋ค. protected๋ ์์ ๊ด๊ณ์ ์๋ค๋ฉด ์๋ก ๋ค๋ฅธ ํจํค์ง์ ์๋ ํด๋์ค์ ์ ๊ทผ๋ ํ์ฉํฉ๋๋ค. default๋ ์ ๊ทผ ์ ์ด ์ง์์๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋๋ฐ, ์ ๊ทผ ์ ์ด์๊ฐ ์๋ ๋ฉ์๋๋ ๊ฐ์ ํจํค์ง์ ์๊ณ , ์์ ๊ด๊ณ์ ์๋ ๋ฉ์๋์ ๋ํด์๋ง ์ ๊ทผ์ ํ์ฉ ํฉ๋๋ค. ์๋ ๊ทธ๋ฆผ์ ์ ๊ทผ ์ ์ด์ ๋ณ๋ก ์ ๊ทผ ํ์ฉ ๋ฒ์๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ธ ๊ฒ์ด์์. ์์ชฝ์ ์์์๋ก ์ ๊ทผ ํต์ ๊ฐ ์ผ์ํ๊ณ , ๋ฐ์ ์์์๋ก ์ ๊ทผ์ด ์์ ๋กญ์ต๋๋ค.
์ ๊ทผ ์ ์ด์๋ Member ๋๋ Class์ ์ฌ์ฉ ๋๋ต๋๋ค!
์ ๊ทผ ์ ์ด์๊ฐ ์ฌ์ฉ๋ ์ ์๋ ๊ณณ - Class, Member ๋ณ์, Method, ์์ฑ์
- private : ๊ฐ์ ํด๋์ค ๋ด ์ ๊ทผ ๊ฐ๋ฅ
- defulat : ๊ฐ์ ํจํค์ง ๋ด๋ง ์ ๊ทผ ๊ฐ๋ฅ
- protected : ๊ฐ์ ํจํค์ง ๋ด์ ๋ค๋ฅธ ํจํค์ง์ ์์ Class์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
- public : ์ด๋ค ๊ณณ์์๋ ์ ๊ทผ ๊ฐ๋ฅ
public | protected | default | private | |
๊ฐ์ ํจํค์ง, ๊ฐ์ ํด๋์ค | ํ์ฉ | ํ์ฉ | ํ์ฉ | ํ์ฉ |
๊ฐ์ ํจํค์ง, ์์ ๊ด๊ณ | ํ์ฉ | ํ์ฉ | ํ์ฉ | ๋ถ์ฉ |
๊ฐ์ ํจํค์ง, ์์ ๊ด๊ณ ์๋ |
ํ์ฉ | ํ์ฉ | ํ์ฉ | ๋ถ์ฉ |
๋ค๋ฅธ ํจํค์ง, ์์ ๊ด๊ณ | ํ์ฉ | ํ์ฉ | ๋ถ์ฉ | ๋ถ์ฉ |
๋ค๋ฅธ ํจํค์ง, ์์ ๊ด๊ณ ์๋ |
ํ์ฉ | ๋ถ์ฉ | ๋ถ์ฉ | ๋ถ์ฉ |
public > protected > (default) > private
๐ป ์์ ์ฝ๋
Main Method
package oopconcept;
// Phone Class์ ์ธ์คํด์ค(๊ฐ์ฒด)๋ฅผ ์์ฑํ์ธ์.
// new: ์ง์ ๋ Class์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๊ทธ ์ฐธ์กฐ๊ฐ(์ฃผ์)๋ฅผ ๋ฐํ ๋ฐ์์ผ ํ๋ค.
// ๋ฐ๋๋ค๋ผ๋ ์๋ฏธ๋ ๋ณ์๋ฅผ ์ ์ธํ๊ณ , ๋์
์ฐ์ฐ์ ํตํด์ ์ ์ฅํด๋ผ (์๋ฃํ ๊ฒฐ์ )
Phone01 phone = new Phone01(); //์ฐธ์กฐํ ๋ณ์: phone
// ์ฒ์ ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ฉด ์์ธ๊ฐ ๋ฐ์ํ๋๋ฐ, ์ด์ ๋ ์๋์ ๊ฐ๋ค.
// 1. Phone Class๋ฅผ ์ ์ ํด์ผ ํ๋ค.
// 2. ํจํค์ง์ ๋ฐ๋ผ import๋ฅผ ํ๋๊ฐ?
phone.setMeta(10); // ์ฌ๊ธฐ์ . ์์๋ Main์ด setMeta Method๋ฅผ ํธ์ถํ๋ ค ํ ๋ phone์์ ์์ผ๋ ์ด๋ ๊ฒ ์์ฑํ๋ค.
// ๋ง์ฝ setMeta();๊ฐ Main์ด๋, ๊ฐ์ Class์์ ์๋ค๋ฉด . ์์๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค.
// ๊ฒฐ๊ตญ 10์ด๋ผ๋ ์ ์๋ฅผ setMeta์ ์ ์ฅํด๋ผ.
// Setํ๊ณ ๋ค์ ๋์ค๋ ์ด๋ฆ์ ์์ ํ๋๋ก ์ ์๋์ด ์๋ค๋ผ๊ณ ์๊ฐํด๋ผ.
} // Main End
} Class End
Phone Class
package oopconcept.vo;
// ํ๋์ ํ๋ก๊ทธ๋จ(ํ๋ก์ ํธ)์ ์ฌ๋ฌ ๊ฐ์ Class(๊ฐ์ฒด)๊ฐ ์ฌ์ฉ๋๋ค.
// ์์ ์ด์ ๋ก ๊ฐ๊ฐ์ Class์ ์ ์ธ๋ Member๋ค์ด ์ฝํ์ด ์๊ธด๋ค.
// ์ด ๋, ์์ฒญ(Call ์ ๋ฌ)๊ณผ ์๋ต(return - ๋ฐํ)์ด ๋ฐ์๋๋๋ฐ, ์์ฒญ์ ๊ฐ์ฒด์ Method๋ฅผ ํธ์ถํ๋ค๋ผ๊ณ ํํํ๋ค.
// ๊ฐ์ฒด๊ฐ ์ํธ์์ฉํ๋ค. ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค๋ผ๊ณ ํํํ๋ค.
public class Phone {
// Class ์ค๊ดํธ ์์ ์ ์ธ๋ ๊ฒ๋ค์ Member๋ผ๊ณ ํ๋ค.
// Class ์ค๊ดํธ ์์ ์ ์๋ ๋ณ์๋ฅผ Member ๋ณ์๋ผ๊ณ ํ๋ค.
int meta; // Member ๋ณ์ ํน์ ํ๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
public int setMeta(int param) { // Method๋ ๋ฌด์กฐ๊ฑด public์ผ๋ก ์ ์ธ
this.meta = param // ์์ ์๋ ํ๋(Classํ ๋ณ์)์ param์ธ์๋ก ๋ฐ์ ๊ฐ์ ์ ์ฅํ๋ค.
return meta;
// Method ์ค๊ดํธ ์์ ๋ด์ฉ์ Body๋ผ๊ณ ํ๋ค.
} // setMeta Method End
} // Main End