2024-08-18 23:50:35
๋ฐ˜์‘ํ˜•

 

์˜ค๋Š˜์€ ์ ‘๊ทผ์ œํ•œ์ž๊ฐ€ ๋ฌด์—‡์ด๊ณ , 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๋Š” ๊ฐ์ฒดํ™œ๋ฅผ ํ•ด์„œ ๊ฐ’์„ ๋ฝ‘์•„๋‚ธ๋‹ค.

 

์ด๊ฒƒ์ด ๋ฐ”๋กœ ์Šคํƒœํ‹ฑ๊ณผ ์ธ์Šคํ„ด์Šค ํ•„๋“œ, ๋ฉ”์†Œ๋“œ์˜ ์ฐจ์ด์ ์ด๋‹ค.

 

 

 

 

 

 

 

728x90