์ค๋์ ์ ๊ทผ์ ํ์๊ฐ ๋ฌด์์ด๊ณ , static์ด๋ ๋ฌด์์ธ๊ฐ์ ๋ํ์ฌ ์์๋ณด์.
์ ๊ทผ์ ํ์๋?
ํด๋์ค์์ ํ๋๋ ๋ฉ์๋ ๋ฑ, ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ ํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฉ์ธ ๋ฉ์๋๋ ์ผ๋ฐ์ ์ธ ๋ฉ์๋๋ฅผ ๋ดค์๋, ์ฐ๋ฆฌ๋ ์ด๋ฐ ๊ฒ์ ๋ณผ ์ ์๋ค.
public class Example {
public static void main(String[] args)
...
...
...
}
}
Example์ด๋ผ๋ class ์์ public์ด ๋ถ์ด์๊ณ , ๋ฉ์ธ๋ฉ์๋์๋ public์ด๋ผ๋ ํค์๋๊ฐ ์กด์ฌํ๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ์ ๊ทผ์ ํ์์ธ๋ฐ, ์ ๊ทผ์ ํ์์๋ ์ข ๋ฅ๊ฐ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. ๊ทธ ์คํ๋๊ฐ ์ด public์ด๋ค.
public : ๋ชจ๋ ํจํค์ง ๋๋ ํด๋์ค์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค
protected : ๊ฐ์ ํจํค์ง ๋ด์์๋ง ์ ๊ทผ๊ฐ๋ฅํ๋ค
(๋จ, ๋ค๋ฅธ ํจํค์ง๋ผ๋ ์์๋ฐ์ ์์ํด๋์ค๋ ์ ๊ทผ ๊ฐ๋ฅ)
default : ๊ฐ์ ํจํค์ง ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค
=> ๋ค๋ฅธ ํจํค์ง์์๋ ์ ๊ทผ ๋ถ๊ฐ
private : ๊ฐ์ ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค
๊ทธ๋ ๋ค๋ฉด Example์ด๋ผ๋ class์ ๋ฉ์ธ๋ฉ์๋๋, ๋ชจ๋ ํจํค์ง ๋๋ ํด๋์ค์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ์ด๋ค.
์ ๊ทผ์ ํ์๋ ์ด๋ฌํ ํน์ง๋ค์ ๊ฐ์ง๊ณ ์๋๋ฐ ๊ทธ์ค์์ ๊ฐ์ฅ ๋ณด์์ฑ์ด ๋๋ค๊ณ ํ ์ ์๋๊ฑด private๋ค.
ํ๋์ private ์ ๊ทผ์ ํ์๋ฅผ ๋ถ์ฌํ๋ฉด ๋ค๋ฅธ ํด๋์ค์์ ํด๋น ํ๋๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก
์ฐํ๋ฅผ ํด์ ํ๋์ ์ ๊ทผ์ ํด์ผ๋ง ํ๋ค.
๊ทธ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ชจ๋ ๊ฐ๋ฐ์๋ค์ด ๋ณธ์ธ ํธ์๋๋ก ์ด๋ฆ์ ๋ถ์ด๋ฉฐ ๋ฉ์๋๋ฅผ ๋ง๋ค๋ฉด ํท๊ฐ๋ฆด ๊ฒ์ด ์๋ช ํ๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ด๋ฆ์ ์ ํ๊ธฐ๋ก ํ๋๋ฐ ๊ทธ๊ฒ์ด ๋ฐ๋ก
getter ์ setter ์ด๋ค.
โป getter๋ get + ํ๋๋ช ์ผ๋ก ์ด๋ฆ์ ์ง์ผ๋ฉฐ ํ๋ ๊ทธ ์์ฒด๋ฅผ ๋ถ๋ฌ์ค๋ ์ญํ ์ ํ๋ค.
โป setter๋ set + ํ๋๋ช ์ผ๋ก ์ด๋ฆ์ ์ง์ผ๋ฉฐ ํ๋์ ๊ฐ์ ์์ ํ๋ฉฐ ๋ถ๋ฌ์ค๋ ์ญํ ์ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด์ ์ ๊ทผ ์ ํ์๋ฅผ ์์ฑํ๋ ์์น์ ๋ํด ์์๋ณด์.
1. ์ ๊ทผ ์ ํ์ + class ํด๋์ค๋ช ===> ํด๋์ค๋ฅผ ๋ํ๋ด๋ ๊ฒ
2. ์ ๊ทผ ์ ํ์ + ์๋ฃํ ํ๋๋ช ===> ํ๋๋ฅผ ๋ํ๋ด๋ ๊ฒ
3. ์ ๊ทผ ์ ํ์ + ๋ฆฌํดํ์ ๋ฉ์๋๋ช (์๋ฃํ ๋งค๊ฐ๋ณ์๋ช ..) ===> ๋ฉ์๋๋ฅผ ๋ํ๋ด๋ ๊ฒ
4. ์ ๊ทผ ์ ํ์ + ํด๋์ค๋ช () ===> ์์ฑ์๋ฅผ ๋ํ๋ด๋ ๊ฒ
์ด๋ ๊ฒ ์ ๊ทผ์ ํ์๋ฅผ ์ฌ์ฉํ ์๊ฐ ์๋ ๊ฒ์ด๋ค.
** ์์ฑ์์ ๋ถ์ฌ๋ ์ ๊ทผ์ ํ์๋ ๊ฐ์ฒดํ ๋ฒ์๋ฅผ ์ ํํ๋ค
* public > protected > default > private (๋ฒ์์ ํฌ๊ธฐ ์)
์ ๊ทผ์ ํ์๋ฅผ ์์๋ณด์์ผ๋ ์ด๋ฒ์ static์ ์์๋ณด์.
์ด์ ์ฐ๋ฆฌ๋ ๋ฉ์ธ๋ฉ์๋์ ๋ถ์ด ์๋ ๋ชจ๋ ์์๋ค์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
static์ด๋?
ํด๋์ค์ ์์กด์ ์ธ ์์๋ผ๊ณ ์๊ฐํ ์ ์๋ค. ์ฆ, ํด๋์ค์ ๊ณ ์ ๋์ด์๋ค.
1. static ํ๋, static ๋ฉ์๋๋ ๊ฐ์ฒดํ ํ์ง ์์๋ ์ฌ์ฉํ ์ ์๋ค.
์ฆ, ๊ฐ์ฒดํ๋ก ์ ์ธํ์ง ์๊ณ ๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ๋ง์ด๋ค.
2. static ๋ฉค๋ฒ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ ๊ฒ์ด ์๋๋ผ.
ํ๋ก๊ทธ๋จ์ ์์ํ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง๋ค
์ฆ, heap ๋ฉ๋ชจ๋ฆฌ๋ ์๋, stack๋ ์๋ ์ 3์ ๊ณต๊ฐ์ด๋ผ๋ ์๋ฏธ๋ค.
ํ๋์ ์ข ๋ฅ์๋ ํฌ๊ฒ ๋ ๊ฐ์ง๊ฐ ์กด์ฌํ๋๋ฐ,
1) static ํค์๋๊ฐ ๋ถ์ง ์์ ํ๋ => ์ธ์คํด์ค ํ๋
- ์ฌ์ฉ๋ฐฉ๋ฒ : ๊ฐ์ฒด๋ช
.ํ๋๋ช
;
2) static ํค์๋๊ฐ ๋ถ์ ํ๋ => ์คํํฑ ํ๋
- ์ฌ์ฉ๋ฐฉ๋ฒ : ํด๋์ค๋ช
.ํ๋๋ช
;
๋ฉ์๋์ ์ข ๋ฅ๋ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ์กด์ฌํ๋๋ฐ,
* ๋ฉ์๋์ ์ข
๋ฅ
1) static ํค์๋๊ฐ ๋ถ์ง์์ ๋ฉ์๋ => ์ธ์คํด์ค ๋ฉ์๋
- ์ฌ์ฉ๋ฐฉ๋ฒ : ํด๋์ค๋ช
.๋ฉ์๋๋ช
();
2) static ํค์๋๊ฐ ๋ถ์ ๋ฉ์๋ => ์คํํฑ ๋ฉ์๋
- ์ฌ์ฉ๋ฐฉ๋ฒ : ํด๋์ค๋ช
.๋ฉ์๋๋ช
();
์ด๊ฒ์ด ์ ๊ทผ์ ํ์์ static์ ๊ฐ๋ ์ด๋ค. ์ฌ์ฉ๋ฒ์ ์ ์๊ณ ์๋ฏธ๋ฅผ ํ์ ํด์ผ
์ด ๋ฉ์๋๊ฐ ์ด๋ ๊ฒ ์ฐ์ด๋๊ตฌ๋, ์ด ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค๋ ํจํค์ง์์๋ ์ฌ์ฉ์ด
์๋๊ฒ ๊ตฌ๋ ๋ฑ๋ฑ ํ์ฉ๋ฒ์ ์ ์ ์์ ๊ฒ์ด๋ค.
static์ ๊ฐ์ฒดํ๋ฅผ ์์ํจ๋ค?? ๋ผ๋ ๊ฒ์ด ์ดํด๊ฐ ์๊ฐ ์ ์์ด์ ์์ ์ฝ๋ ํ๋๋ฅผ ๋จ๊ธฐ๊ฒ ๋ค.
package static_class;
public class ClassA {
// ์ธ์คํด์ค ํ๋
int instanceField;
// ์คํํฑ ํ๋(๋ช
์์ ์ด๊ธฐํ ๋๋ ์ด๊ธฐํ๋ธ๋ก์ ํตํด ์ด๊ธฐํํ๋ค)
static int staticField = 20;
ClassA(int instanceField) {
this.instanceField = instanceField;
}
//์ธ์คํด์ค ๋ฉ์๋
void instanceMethod() {
System.out.println("์ธ์คํด์ค ๋ฉ์๋ ํธ์ถ!");
}
// ์คํํฑ ๋ฉ์๋
static void staticMethod() {
System.out.println("์คํํฑ ๋ฉ์๋ ํธ์ถ");
}
void testMethod() {
// ์คํํฑ ๋ฉ์๋๋ ํ๋ก๊ทธ๋จ์ด ์์๋ ๋ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ฏ๋ก
// ๊ฐ์ฒดํ๊ฐ ๋์ด์ผ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๋ ์ธ์คํด์ค ํ๋๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ค!
// System.out.println("์ธ์คํด์ค ํ๋ :" + instanceField);
System.out.println("์คํํฑ ํ๋ :" + staticField);
}
}
package static_class;
public class StaticTest {
public static void main(String[] args) {
// ํด๋์ค๋ช
.ํ๋๋ช
=> ์คํํฑ ํ๋
// ๊ฐ์ฒดํ ํ์ง ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
System.out.println(ClassA.staticField);
// ํด๋์ค๋ช
.๋ฉ์๋๋ช
=> ์คํํฑ ๋ฉ์๋
ClassA.staticMethod();
// ์ธ์คํด์ค ํ๋, ์ธ์คํด์ค ๋ฉ์๋๋ ๊ฐ์ฒดํ ํ์ ์ฌ์ฉ๊ฐ๋ฅ
// System.out.println(ClassA.instaceField);
// ClassA.instanceMethod();
// ์ธ์คํด์ค ๋ฉค๋ฒ๋ ๊ฐ์ฒดํ ํ์ ์ฌ์ฉํ๋ค
ClassA c1 = new ClassA(10);
System.out.println(c1.instanceField);
c1.instanceMethod();
// System.out.println(c1.staticField);
// ์คํํฑ ํ๋๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณต์ ํด์ ์ฌ์ฉํ๋ค
ClassA.staticField = 30;
System.out.println(ClassA.staticField);
c1.testMethod();
System.out.println(Math.max(10, 20));
}
}
์, ์ฒซ๋ฒ์งธ ์ฝ๋ฉ์ ํด๋์ค๋ฅผ ๋ง๋ ์ฝ๋์ด๋ค.
๋๋ฒ์ฌ ์ฝ๋ฉ์ ๋ณด๋ฉด, staticField๋ฅผ ๊ฐ์ฒดํ ์์ด ๋ฐ๋ก ๊ฐ์ ๋ฝ์๋ด๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํ์ง๋ง instanceField๋ ๊ฐ์ฒดํ๋ฅผ ํด์ ๊ฐ์ ๋ฝ์๋ธ๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ์คํํฑ๊ณผ ์ธ์คํด์ค ํ๋, ๋ฉ์๋์ ์ฐจ์ด์ ์ด๋ค.

'์ธ์ด > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA : Casting (์บ์คํ ) (7) | 2024.08.28 |
---|---|
JAVA : Final(์์) ์ฌ์ฉํ๊ธฐ (0) | 2024.08.21 |
JAVA : TV ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ (1) | 2024.08.18 |
JAVA : ์์(Inheritance) (0) | 2024.08.16 |
JAVA : ๋ฉ์๋(method) (0) | 2024.08.12 |