< ์ด์ „ ํฌ์ŠคํŒ… - ์ธ์Šคํ„ด์Šค, ์ƒ์„ฑ์ž ๊ทธ๋ฆฌ๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ž์˜ ์ฐจ์ด์ >

 

 

๊ธฐ๋ณธ ์šฉ์–ด ์ •๋ฆฌ - ๐Ÿง ์ธ์Šคํ„ด์Šค, ์ƒ์„ฑ์ž ๊ทธ๋ฆฌ๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter)์™€ ์ธ์ž(Argument)์˜ ์ฐจ์ด

๊ธฐ๋ณธ ์šฉ์–ด ์ •๋ฆฌ - ๐Ÿง ๋ณ€์ˆ˜๋ž€?๐Ÿชฝ"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."    โ–บ ๋ณ€์ˆ˜๋ณ€์ˆ˜๋ž€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„์ด ๋ถ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋‹ค.๋ณ€์ˆ˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ

post-this.tistory.com

 

 


 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

 

 

 

โ–บ static

  • static์€ ์ •์ ์ธ, ๊ณ ์ •๋œ ์ด๋ผ๋Š” ๋œป์„ ์ง€๋…”๋‹ค.
  • ์ฃผ๋กœ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์— ๋ถ™์ธ๋‹ค.
  • ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. 
  • ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ด์ œ๋œ๋‹ค.
  • static์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
  • static์„ ๋ถ™์ด๋ฉด static ์˜์—ญ์—(๋ฉ”๋ชจ๋ฆฌ) ํ• ๋‹น๋œ๋‹ค. โ–บ ๊ฐ’์ด ๊ณ ์ •์ ์œผ๋กœ ์œ ์ง€๋œ๋‹ค.

 

 

 

Q. static์ด ๋ถ™์—ˆ์„ ๋•Œ์™€ ๋ถ™์ง€ ์•Š์•˜์„ ๋•Œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€?

A. ์ฒซ๋ฒˆ์งธ ์˜ˆ์ œ๋Š” ๋ณ€์ˆ˜์— static์„ ๋ถ™์˜€์„๋•Œ์™€ ์•„๋‹๋•Œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ฒ ๋‹ค.

 

<static ์˜์—ญ์— ์˜ฌ๋ผ๊ฐ€ ๊ฐ’์ด ๊ณ ์ •์ ์œผ๋กœ ์œ ์ง€๋˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ œ>

class Counter {

    // static์„ ๋ถ™์ธ ๋ณ€์ˆ˜ count
    // ๋ณ€์ˆ˜ count๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ–ˆ๋‹ค.
    static int count = 0;

    // ๋ฉ”์„œ๋“œ Counter
    // ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๋ณ€์ˆ˜ count๋Š” ++์ฆ๊ฐ€ํ•œ๋‹ค.
    Counter() {
        count++;
        System.out.println("Count : " + count);
    }
}

public class Main {
    public static void main(String[] args) {
    	
        // ์ธ์Šคํ„ด์Šค c1๊ณผ c2, c3๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋‹ค.
        // Counter ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ , ๋ฉ”์„œ๋“œ ๋‚ด count++;๋„ ์‹คํ–‰๋œ๋‹ค.
        Counter c1 = new Counter();  // Count: 1
        Counter c2 = new Counter();  // Count: 2
        Counter c3 = new Counter();  // Count: 3
        
    }
}

 

์œ„์˜ ์˜ˆ์ œ์—์„œ๋Š” static์ด ๋ถ™์€ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค. static์€ static ์˜์—ญ์— ํ• ๋‹น๋˜์–ด ๊ฐ’์ด ๊ณ ์ •์ ์œผ๋กœ ์œ ์ง€๋œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ ๋ง์€ ์œ„์˜ ์˜ˆ์ œ์ฒ˜๋Ÿผ c1๊ณผ c2, c3๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ count ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” ๊ฑธ ์•Œ๋ ค์ค€๋‹ค.

 

class Counter {

    // static์ด ์ œ๊ฑฐ๋œ ๋ณ€์ˆ˜
    // ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ๋˜์—ˆ๋‹ค.
    int count = 0;  

    // ๋ฉ”์„œ๋“œ Counter
    // ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ณ€์ˆ˜ count๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค.
    Counter() {
        count++;
        System.out.println("Count: " + count);
    }
}

public class Main {
    public static void main(String[] args) {
    	
        // ์ธ์Šคํ„ด์Šค c1, c2, c3๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ Counter ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
        Counter c1 = new Counter();  // Count: 1
        Counter c2 = new Counter();  // Count: 1
        Counter c3 = new Counter();  // Count: 1
    }
}

 

๋ณ€์ˆ˜์—์„œ static์ด ์‚ฌ๋ผ์ง„ ์˜ˆ์ œ๋‹ค. ๋ณ€์ˆ˜์— static์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ๊ฐ’์ด ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ธ์Šคํ„ด์Šค c1๊ณผ c2, c3๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์›€์ง์ด๊ฒŒ ๋˜๊ณ  count๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์˜ฌ๋ผ๊ฐ€์„œ 1์ด๋ผ๋Š” ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

 

 

๋‘๋ฒˆ์งธ ์˜ˆ์ œ๋Š” ๋ฉ”์„œ๋“œ์— static์ด ์˜ฌ๋ผ๊ฐˆ ๊ฒฝ์šฐ ์–ด๋–ค์‹์œผ๋กœ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

 

< ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ œ >

class Add {
   
    // ๋ฉ”์„œ๋“œ add์— static์ด ๋ถ™์—ˆ๋‹ค.
    static int add(int a, int b) {
        return a + b;
    }
}

public class Main {
    public static void main(String[] args) {
    
        // ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
        int sum = Add.add(10, 20);  
        System.out.println(sum);  // 30
    }
}

 

 

๋ฉ”์„œ๋“œ์— static์„ ๋ถ™์ด๋‹ˆ Add.add(10,30)์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ๊ฒฐ๊ณผ๊ฐ’์ด ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

	Add num = new Add();
	int sum = num.add(10, 20);
	System.out.println("Sum : " + sum);

 

๋งŒ์•ฝ ๋ฉ”์„œ๋“œ์— static์ด ์—†์–ด์ง€๋ฉด์„œ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•˜๊ณ  ๊ทธ ํ›„ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•ด์•ผ ์˜ค๋ฅ˜ ์—†์ด ๊ฒฐ๊ณผ๊ฐ€ ์ œ๋Œ€๋กœ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

Q. ์™œ static์ด ๋ถ™์€ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ณผ๋ถ€ํ™”๋ฅผ ์œ ๋ฐœํ• ๊นŒ?

A. ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ž ๊น ์‚ดํŽด๋ณด์ž๋ฉด [ heap ์˜์—ญ /  stack ์˜์—ญ  /  static ์˜์—ญ ] ์ด๋ ‡๊ฒŒ ์„ธ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค. heap ์˜์—ญ์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฃผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋˜๊ณ , stack ์˜์—ญ์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ˜น์€ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๊ณ , static ์˜์—ญ์€ static์ด ๋ถ™์€ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

 

heap ์˜์—ญ์€ Garbage Collector๊ฐ€ ์žˆ์–ด์„œ ์“ฐ์ง€ ์•Š๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์•Œ์•„์„œ ์ •๋ฆฌํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ static์€ Garbage Collector๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋ฉด  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€ ํ•ด์ œ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— static์„ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๊ทธ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

 


 

 

 

โ–บ final

  • ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค์— ์‚ฌ์šฉ๋œ๋‹ค.
  • final๊ณผ ํ•จ๊ป˜ ์„ ์–ธ๋˜๋ฉด ๊ทธ ๋Œ€์ƒ์˜ ๋ณ€๊ฒฝ์„ ๊ธˆ์ง€ํ•œ๋‹ค.
  • final๊ณผ ํ•จ๊ป˜ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ƒ์ˆ˜๊ฐ€ ๋œ๋‹ค.
  • final๊ณผ ํ•จ๊ป˜ ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋Š” ์˜ค๋ฒ„๋ผ์ด๋“œ๋ฅผ ๊ธˆ์ง€ํ•œ๋‹ค.
  • final๊ณผ ํ•จ๊ป˜ ์„ ์–ธ๋œ ํด๋ž˜์Šค๋Š” ์ƒ์†์„ ๊ธˆ์ง€ํ•œ๋‹ค.

 

 

Q. final๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ๋Š”?

 

A.  final์ด ๋ถ™์€ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค ํ•  ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

ํ˜„์žฌ ์˜ˆ์ œ๋Š” final์ด ๋ถ™์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.

 public class Main {
        public static void main(String[] args) {

           // final์ด ๋ถ™์€ ๋ณ€์ˆ˜
           final int a = 10;
           
           // ํ‰๋ฒ”ํ•œ ๋ณ€์ˆ˜
           int b = 20;
           
           System.out.println("a : " + a); // a : 10
           System.out.println("b : " + b); // b : 20

           // ๋ณ€์ˆ˜ b์˜ ๊ฐ’๋งŒ ๋ฐ”๊ฟ”๋ณด์•˜๋‹ค.
           b = 2;

           // final์ด ๋ถ™์ง€ ์•Š์€ ๋ณ€์ˆ˜ b๋Š” ์ž˜ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.
           System.out.println("update b : " + b); // update b : 2

        }
    }

 

๊ฒฐ๊ณผ๊ฐ€ ์ž˜ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

 

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฒˆ์—” final์ด ๋ถ™์€ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ”๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 public class Main {
        public static void main(String[] args) {

           // final์ด ๋ถ™์€ ๋ณ€์ˆ˜
           final int a = 10;
           
           // ํ‰๋ฒ”ํ•œ ๋ณ€์ˆ˜
           int b = 20;
           
           System.out.println("a : " + a); // a : 10
           System.out.println("b : " + b); // b : 20

           a = 1;
           b = 2;

           System.out.println("update a : " + a);
           System.out.println("update b : " + b); 

        }
    }

 

fianl ๋ณ€์ˆ˜(variable) a์—๋Š” ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ๊ตฌ์™€ ํ•จ๊ป˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

 

 

 

Q. final๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ๋Š”?

 

A. ์˜ค๋ฒ„๋ผ์ด๋“œ๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค. ์˜ค๋ฒ„๋ผ์ด๋“œ๋ž€ ์‰ฝ๊ฒŒ ๋งํ•ด ์ƒ์†๋ฐ›์€ ๋ฉ”์„œ๋“œ๋ฅผ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋กœ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ๋ฉ”์„œ๋“œ์— ์“ฐ์ธ ์ด๋ฆ„์„ ๋™์ผํ•˜๊ฒŒ ๊ฐ€์ ธ๊ฐ€์„œ ๊ฐ’๋งŒ ๋ฐ”๊ฟ” ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ๋ฌผ๋ก  ๋ฌด์ž‘์ • ์ด๋ฆ„์„ ๋˜‘๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ํ˜น์€ ๊ฐฏ์ˆ˜๊ฐ€ ๋™์ผํ•˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค๋Š” ์กฐ๊ฑด์ด ์žˆ๋‹ค. (๊ทธ ์™ธ์—๋„ ์žˆ์Œ)  

 

class Parent {

    // final ๋ฉ”์„œ๋“œ์ธ fail
    public final void fail() {
        System.out.println("๊ณผ์—ฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ• ๊นŒ?");
    }
}

// ์ž์‹ ํด๋ž˜์Šค
class Child extends Parent {

    // fail ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ ํ–ˆ๋‹ค.
    @Override
    public void fail() {
        System.out.println("์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.");
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        child.fail();
    }
}

 

์ด๋ ‡๊ฒŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€๋ฅผ ์‚ดํŽด๋ณด๋ฉด Child ํด๋ž˜์Šค ์•ˆ์— ์žˆ๋Š” fail( )์€ Parent ํด๋ž˜์Šค ์•ˆ์— ์žˆ๋Š” fail ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค, ์žฌ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋Š” final์ž…๋‹ˆ๋‹ค. ๋ผ๊ณ  ๋˜์–ด์žˆ๋‹ค. ํด๋ž˜์Šค์— final์ด ๋ถ™์€ ๊ฒฝ์šฐ๋Š” ์ƒ์†์ด ๋ถˆ๊ฐ€ํ•œ ๊ฒฝ์šฐ๋‹ˆ ๋„˜์–ด๊ฐ€๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

 

 

Q. ๊ทธ๋ ‡๋‹ค๋ฉด ์ฃผ๋กœ final๊ณผ static์„ ํ•จ๊ป˜ ์“ฐ๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ผ๊นŒ?

A. final๊ณผ static์ด ๋ณ€์ˆ˜์— ์„ ์–ธ๋˜์–ด์žˆ๋‹ค๋ฉด ๊ทธ ์˜๋ฏธ๋Š” ์ด ๊ฐ’์€ ํด๋ž˜์Šค ๋‚ด์— ๋‹ค ๊ณต์œ ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ๊ฐ’์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์–ด ๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ฃผ๋กœ ์–ด๋””์— ์‚ฌ์šฉ์ด๋ ๊นŒ? ๋‹ค์–‘ํ•œ ๊ณณ์— ํ™œ์šฉ๋˜๊ฒ ์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์›์ฃผ์œจ๊ณผ ๊ฐ™์€ ์ˆ˜ํ•™์ ์ธ ๋ถ€๋ถ„๋„ ์žˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ ์ตœ๋Œ€ ์‚ฌ์šฉ์ž์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์•ผํ•  ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. 

final๊ณผ static์ด ๋ฉ”์„œ๋“œ์— ์„ ์–ธ๋˜์—ˆ๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ํ•„์š”์—†์ด ํด๋ž˜์Šค ์ด๋ฆ„์„ ์จ์„œ ๋ฐ”๋กœ ํ˜ธ์ถœํ•˜๋ฉด์„œ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด ๊ฐ์ฒด ์—†์ด ํ˜ธ์ถœํ•˜๊ณ  ์žฌ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ ์“ด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ™œ์šฉ๋˜๋Š” ๊ณณ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด๋ณด๋ฉด ํšŒ์›๊ฐ€์ž… ์‹œ, ์ด๋ฉ”์ผ์„ ์ ์œผ๋ผ๊ณ  ํ–ˆ์„ ๊ฒฝ์šฐ ๊ทธ ์ด๋ฉ”์ผ์˜ ํ˜•์‹์ด ๋งž๋Š”์ง€ ๊ฒ€์ฆํ•  ๋•Œ ์“ฐ์ผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค. 

 

๊ฒฐ๋ก , ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด์—์„œ ์ผ๊ด€๋œ ๊ฐ’์„ ์œ ์ง€ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

 

 

 

ํ˜ผ์ž ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ดํ•ดํ•˜๊ณ  ์“ด ๋‚ด์šฉ์ด๋ผ ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€๋กœ ์ ์–ด๋‘์‹œ๋ฉด ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ€

 

[ ๋ธ”๋กœ๊ทธ์— ์“ด ๋‚ด์šฉ๋“ค์˜ ์ถœ์ฒ˜๋Š” ์•„๋ž˜์— ์ ์–ด๋‘˜ํ…Œ๋‹ˆ

๋“ค์–ด๊ฐ€์„œ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋”์šฑ ๋„์›€์ด ๋˜์‹ค ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค ]

 

 

 

 

 


 

- static ์ถœ์ฒ˜

 

[JAVA] Static? ๊ทธ๊ฑฐ ์™œ ๋ถ™์ด๋Š”๊ฑด๋ฐ?

Static. ์ž๋ฐ”๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ฐธ ๋งŽ์ด ๋งˆ์ฃผ์น˜๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ๋‹น์žฅ main ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ๋งŒ ๋ณด๋”๋ผ๋„ public static void main(String[] args){ ... } ์š”๋ ‡๊ฒŒ static์ด ๋–กํ•˜๋‹ˆ ๋ถ™์–ด์žˆ์ฃ . ๊ทธ๋ ‡๋‹ค๋ฉด st

jooona.tistory.com

 

 

- static ์ถœ์ฒ˜

 

[Java] static์„ ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

Static Java์—์„œ Static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ ํ• ๋‹น๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•ด์ œ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

velog.io

 

 

- static ์˜ˆ์ œ ์ถœ์ฒ˜

 

[JAVA] static(์ •์ ) ๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ

static static์ด๋ž€? ์ •์ ์ธ, ์›€์ง์ด์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์œผ๋กœ Java์—์„œ static ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ ํ• ๋‹น๋˜์–ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ ํ•ด์ œ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. static์œผ๋กœ ์„ ์–ธ๋œ ๋ฉ”์„œ๋“œ๋‚˜ ๋ณ€

hu-coding.tistory.com

 

 

-final ์ถœ์ฒ˜

 

[Java] final ์„ ์•Œ์•„๋ณด์ž

final์ด๋ž€? final์€ ํด๋ž˜์Šค, ๋ฉ”์†Œ๋“œ , ๋ณ€์ˆ˜์— ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์•ฝ์–ด๋กœ ๋ถˆ๋ณ€์ฒ˜๋ฆฌ๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. final์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€์ƒ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ๋˜๋Š” ํ™•์žฅ์„ ๊ธˆ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์˜ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด์„œ ์ด

yeoonjae.tistory.com

 

 

- ์˜ค๋ฒ„๋ผ์ด๋“œ ์ถœ์ฒ˜

 

8. ์˜ค๋ฒ„๋กœ๋”ฉ, ์˜ค๋ฒ„๋ผ์ด๋“œ : Overloading, Override & ๋‹คํ˜•์„ฑ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ €๋ฒˆ ํฌ์ŠคํŒ… ๋งˆ์ง€๋ง‰์— ์–ธ๊ธ‰๋œ์˜ค๋ฒ„๋ผ์ด๋“œ์™€ ์œ ์‚ฌํ•œ ๋‹จ์–ด๋กœ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ==================================================== Overloading vs Override & ๋‹ค

programmingnote.tistory.com

 

 

- static๊ณผ final์„ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์ถœ์ฒ˜

 

์ž๋ฐ”์˜ static๊ณผ final ํ‚ค์›Œ๋“œ ๊นŠ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

์ž๋ฐ”์˜ static๊ณผ final ํ‚ค์›Œ๋“œ๋ฅผ ๊นŠ๊ฒŒ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

f-lab.kr

 

+ Recent posts