< ์ด์ „ ์ •๋ฆฌ ๊ธ€  - ์ž์ฃผ ํ•จ๊ป˜ ์“ฐ์ด๋Š” static๊ณผ final >

 

 

Java ๊ธฐ๋ณธ ์šฉ์–ด ์ •๋ฆฌ - ๐Ÿง ์ž์ฃผ ํ•จ๊ป˜ ์“ฐ์ด๋Š” static๊ณผ final

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

post-this.tistory.com

 

 

 

< ์ž๋ฐ” ์™„์ „ ์ •๋ณต_ 10์žฅ ํด๋ž˜์Šค์˜ ์ƒ์†๊ณผ ๋‹คํ–ฅ์„ฑ >

 

[Java] ์ž๋ฐ” ์™„์ „ ์ •๋ณต_ 10์žฅ ํด๋ž˜์Šค์˜ ์ƒ์†๊ณผ ๋‹คํ˜•์„ฑ (2)

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ      ์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ

post-this.tistory.com

 

 


 

 

๐Ÿชฝ

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

 

 

1. ๊ธฐ๋ณธ์ ์ธ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

class A {
    void print() {
         System.out.println("A ํด๋ž˜์Šค")
    }
}

class B extends A {
    @Override
    void print() {
         System.out.println("B ํด๋ž˜์Šค")
    }
}

public class MethodOverrideing_1 {
     public static void main(String[] args) {
         
         A aa = new A();
         aa.print();
         
         B bb = new B();
         bb.print();
         
         A ab = new B();
         ab.print();
     }
}
์ด ์ฝ”๋“œ๋Š” '์ž๋ฐ” ์™„์ „ ์ •๋ณต'์˜ ์ฝ”๋“œ๋‹ค. ์ „์— ๋ฐฐ์› ๋˜๊ฑธ ๋ณต์Šตํ•ด๋ณด์ž๋ฉด, A aa = new A( );๋Š” A ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์ด์ž A ํƒ€์ž…์ด๋‹ค. aa.print( )๋ฅผ ์‹คํ–‰ํ•˜๋ฉด A ํด๋ž˜์Šค์— ์žˆ๋Š” print ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

๊ทธ ๋‹ค์Œ A ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ํ›„ B bb = new B( );๊ฐ€ ์ƒ์„ฑ๋˜๋‹ˆ ๋ฉ”์„œ๋“œ ์˜์—ญ์— ์ €์žฅ๋œ A์˜ print ๋ฉ”์„œ๋“œ๋ฅผ ๋ฎ๊ณ  B์˜ print ๋ฉ”์„œ๋“œ๊ฐ€ ์˜ฌ๋ผํƒ€๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ bb.print( )๊ฐ€ ์‹คํ–‰๋˜๋ฉด "B ํด๋ž˜์Šค"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

์ด์ œ A ab = new B( );๋ฅผ ์‚ดํŽด๋ณด์ž. ํ•ด๋‹น ์ฝ”๋“œ๋Š” A ํƒ€์ž…์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋Š” ๋ง์€ ab.print( )๋Š” "A ํด๋ž˜์Šค"๊ฐ€ ์ถœ๋ ฅ๋˜์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์•„๊นŒ ์œ„์˜ ์ฝ”๋“œ์—์„œ ์ด๋ฏธ B bb = new B( );๋กœ A ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” print ๋ฉ”์„œ๋“œ๊ฐ€ B ํด๋ž˜์Šค์˜ print( ) ๋ฉ”์„œ๋“œ๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ๋˜์—ˆ๋‹ค. A ab = new B( );๋Š” B์˜ print( )๊ฐ€ ์‹คํ–‰๋˜๊ณ  "B ํด๋ž˜์Šค"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

2. ์—…์บ์ŠคํŒ…๊ณผ ๋‹ค์šด์บ์ŠคํŒ…

class A {
    void print() {
        System.out.println("A ํด๋ž˜์Šค");
    }
}

class B extends A {
    @Override
    void print() {
        System.out.println("B ํด๋ž˜์Šค");
    }
    
    void printB() {
        System.out.println("B์—๋งŒ ์žˆ๋Š” ๋ฉ”์„œ๋“œ");
    }
}

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

        A aa = new A();   
        B bb = new B();   

        A ab = new B();  
        ab.print();       

        // ab.printB();  

        B b2 = (B) ab;    
        b2.printB();     
    }
}

 

์—…์บ์ŠคํŒ…์€ ์•„๊นŒ ๊ธฐ๋ณธ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์—์„œ ํ–ˆ๋‹ค. A ab = new B( );๊ฐ€ ์—…์บ์ŠคํŒ…ํ•œ ์ผ€์ด์Šค๋‹ค. ์—…์บ์ŠคํŒ…์ด๋ž€, ์ž์‹ ํด๋ž˜์Šค(B ํด๋ž˜์Šค)๊ฐ€ ๋ถ€๋ชจ ํด๋ž˜์Šค(A ํด๋ž˜์Šค) ํƒ€์ž…์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, B ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šค๋กœ ๊ฐ€์ ธ๋„ B ํด๋ž˜์Šค์— ์žˆ๋Š” ๋ชจ๋“  ๋ฉ”์„œ๋“œ์™€ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฒฐ๊ตญ ํƒ€์ž…์€ A์ด๊ธฐ์— A ํด๋ž˜์Šค์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ์™€ ํ•„๋“œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด printB( ) ๋ฉ”์„œ๋“œ๋Š” B ํด๋ž˜์Šค์—๋งŒ ์žˆ๊ณ  A ํด๋ž˜์Šค์— ์—†๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ printB๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ฐธ์กฐ ํƒ€์ž…๋„ ์‹ค์ฒด ๊ฐ์ฒด๋„ B์ธ B bb = new B( );๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ab๋ฅผ ๋‹ค์šด ์บ์ŠคํŒ…ํ•˜๋ฉด ๋œ๋‹ค.


๋‹ค์šด ์บ์ŠคํŒ…์€ ํƒ€์ž…์„ ๋‹ค์‹œ B b2 = (B) ab๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. ์ด๊ฒƒ์„ ํ˜•๋ณ€ํ™˜์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

 

 

3. super( ), this( )

class A {
    A() {
        this(3);
        System.out.println("A ์ƒ์„ฑ์ž1")
    }
    
    A(int a) {
        System.out.println("A ์ƒ์„ฑ์ž2")
    }
}

class B extends A {
    B() {
         this(3);
         System.out.println("B ์ƒ์„ฑ์ž1")
    }
    
    B(int a) {
         System.out.println("B ์ƒ์„ฑ์ž2")
    }
}
A aa1 = new A();
A aa2 = new A(3);

B bb1 = new B();
B bb2 = new B(3);
ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๋˜‘๊ฐ™์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์ƒ์„ฑ์ž์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด A aa1 = new A( ); ์ด๊ฒƒ์€ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์ฝ”๋“œ์ด๋‹ค. super์™€ this๋Š” ์ƒ์„ฑ์ž ์•ˆ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. super๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ์‹œํ‚ค๋ฉฐ, ๋งŒ์ผ ์ƒ์„ฑ์ž์— super๋‚˜ this๊ฐ€ ์—†๋‹ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ super๋ฅผ ํฌํ•จ์‹œ์ผœ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  this๋Š” ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์žˆ๋Š” ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ์‹œํ‚จ๋‹ค.(์ƒ์„ฑ์ž๊ฐ€ 2๊ฐœ ์ด์ƒ ์žˆ์–ด์•ผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.) ์ฆ‰ this๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์žˆ๋Š” ์ƒ์„ฑ์ž๋กœ ๊ฐ€์ง€ ์•Š๊ฒŒ ํ•ด์ค€๋‹ค.

B bb1 = new B( );๋ฅผ ์‚ดํŽด๋ณด์ž.

1) this(3)์œผ๋กœ ์ธํ•ด ๊ฐ™์€ ํด๋ž˜์Šค ์•ˆ์— ์žˆ์œผ๋ฉด์„œ, 3์ด๋ผ๋Š” ์ธ์ž๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” B(int a)๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
2) ๊ทธ๋Ÿฐ๋ฐ B(int a) ์ƒ์„ฑ์ž๋Š” this๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์ ์œผ๋กœ super๋ฅผ ๋„ฃ์–ด์ค„ ๊ฒƒ์ด๋‹ค.
3) super๋กœ ์ธํ•ด ๋ถ€๋ชจํด๋ž˜์Šค์— ์žˆ๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž(A)๋กœ ๊ฐ€๊ฒŒ ๋œ๋‹ค.
4) A ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž A์— this(3)์ด ์žˆ์œผ๋‹ˆ, intํ˜• ์ธ์ž ํ•˜๋‚˜๋ฅผ ๋ฐ›๋Š” A ์ƒ์„ฑ์ž๊ฐ€ ์‹คํ–‰๋  ๊ฒƒ์ด๋‹ค.
5) A(int a)๊ฐ€ ์‹คํ–‰๋˜์–ด ๋“œ๋””์–ด! "A ์ƒ์„ฑ์ž2"๊ฐ€ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.
6) ๊ทธ๋Ÿฌ๋ฉด ๋‹ค์‹œ A ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž A๋กœ ๋Œ์•„์™€ "A ์ƒ์„ฑ์ž 1"์ด ์ถœ๋ ฅ๋œ๋‹ค.
7) ๋˜ ์ „์œผ๋กœ ๋Œ์•„๊ฐ€ B ํด๋ž˜์Šค์˜ B(int a)์˜ "B ์ƒ์„ฑ์ž 2"๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ 
8) ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ€์žฅ ์ฒ˜์Œ ํ˜ธ์ถœ๋˜์—ˆ๋˜ B ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž B์˜ "B ์ƒ์„ฑ์ž 1"์ด ํ˜ธ์ถœ๋œ๋‹ค.

๋งŒ์•ฝ์— A ab = new B( ); ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด๋ณธ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ๊ฒฐ๊ตญ ์ž์‹ ํด๋ž˜์Šค B์˜ B( )๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ถœ๊ณผ์ •๋ถ€ํ„ฐ ๋‹ต๊นŒ์ง€ ๋ชจ๋‘ ๊ฐ™๋‹ค.


 

 

4. ๋ฌธ์ œ 

- ์ˆ˜์ œ๋น„ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ 2023 ์ฑ… ๋ฌธ์ œ ๋ฐœ์ทŒ

class Parent {
    public Parent() {
        System.out.print("A");
    }
    public void fn() {
        System.out.print("B");
    }
    public void fnA() {
        System.out.print("C");
    }
}

class Child extends Parent {
    public Child() {
        System.out.print("D");
    }
    public void fn() {
        System.out.print("E"); 
    }
    public void fnB() {
        System.out.print("F");
    }
}
Child c = new Child( );
c.fn( );
c.fnA( );

 

 


 

 

1) Child c = new Child( );๋กœ Child ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์œผ๋‹ˆ Child( )๊ฐ€ ํ˜ธ์ถœ๋  ๊ฒƒ์ด๋‹ค. 
2) ๊ทธ๋Ÿฐ๋ฐ Child( ) ๋‚ด๋ถ€์— this๊ฐ€ ์—†๋‹ค. (๋ฌผ๋ก  this๋ฅผ ์“ธ ์ˆ˜ ์—†๋‹ค, ์ƒ์„ฑ์ž๊ฐ€ 1๊ฐœ๋ผ์„œ)
3) ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์ ์œผ๋กœ super๋ฅผ ๋„ฃ์–ด ๋ถ€๋ชจ ํด๋ž˜์Šค Parent์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
4) Parent ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋˜์–ด "A"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
5) ๋‹ค์‹œ Child ์ƒ์„ฑ์ž๋กœ ๋Œ์•„์™€์„œ "B"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

6) c.fn( );์€ Child ํด๋ž˜์Šค์— fn ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์œผ๋‹ˆ "E"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
7) c.fnA( );์€ fnA๊ฐ€ Parent ํด๋ž˜์Šค์— ์žˆ์ง€๋งŒ Child๊ฐ€ Parent ํด๋ž˜์Šค๋ฅผ ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ๋ฐ›๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ์—†์ด Parent ํด๋ž˜์Šค์˜ fnA๊ฐ€ ์‹คํ–‰๋˜์–ด "C"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.



1.
Parent cp = new Child();
cp.fn();
cp.fnA();

2.
Child pc = new Parent():
cp.fn();
cp.fnA():

3.
Parent p = new Parent();
cp.fnB();
์œ„์˜ ๊ฒฝ์šฐ๋Š” ์–ด๋–จ๊นŒ?

1๋ฒˆ์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ์—†์ด ๋‹ค ์‹คํ–‰์ด ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ 2๋ฒˆ์˜ ๊ฒฝ์šฐ Child pc = new Parent( );์—์„œ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฐธ์กฐ ๋ณ€์ˆ˜๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์ธ Child์ธ๋ฐ ํ•˜์œ„ ํด๋ž˜์Šค์ธ ์ฐธ์กฐ ํƒ€์ž… ์•ˆ์— ์ƒ์œ„ ํด๋ž˜์Šค์ธ Parent ๊ฐ์ฒด๋ฅผ ๋„ฃ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

3๋ฒˆ๋„ ์‹คํ–‰๋  ์ˆ˜ ์—†๋‹ค. Parent๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ํ•˜์œ„ ํด๋ž˜์Šค์ธ Child์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋‹ค์–‘ํ•˜์ง€๋งŒ, ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ์œ„ํ•จ์ด ์žˆ๋‹ค. ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์€ ์ฐธ์กฐ๋ณ€์ˆ˜ ํƒ€์ž…์„ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค.

 

 

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

 

 

๊ธฐ๋ณธ ์šฉ์–ด ์ •๋ฆฌ - ๐Ÿง ์ธ์Šคํ„ด์Šค, ์ƒ์„ฑ์ž ๊ทธ๋ฆฌ๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜(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

 

 

 

< ์ด์ „ ํฌ์ŠคํŒ… - ๋ณ€์ˆ˜>

 

 

๊ธฐ๋ณธ ์šฉ์–ด ์ •๋ฆฌ - ๐Ÿง ๋ณ€์ˆ˜๋ž€?

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

post-this.tistory.com

 


 

 

๐Ÿชฝ

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

 

 

 

โ–บ ์ธ์Šคํ„ด์Šค

  • ํด๋ž˜์Šค๊ฐ€ ์„ค๊ณ„๋„, ์ธ์Šคํ„ด์Šค๋Š” ์„ค๊ณ„๋„๋Š” ๋ณด๊ณ  ๋งŒ๋“  ๋ฌผ๊ฑด์ด๋‹ค.
  • ์‹ค์ฒดํ™”๋œ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์–ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค๋ผ ๋ถ€๋ฅธ๋‹ค.
  • ๊ฐ์ฒด ๋‚ด์— ์ธ์Šคํ„ด์Šค๋ผ๋Š” ๊ฐœ๋…์ด ํฌํ•จ๋˜์–ด์žˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์ด ํฌ๊ฒŒ ์˜๋ฏธ์žˆ์ง„ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค...

 

 

Q. ํด๋ž˜์Šค๊ฐ€ ์„ค๊ณ„๋„๋ฉฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์„ค๊ณ„๋„๋ฅผ ๋ณด๊ณ  ๋งŒ๋“  ๋ฌผ๊ฑด์ด๋ผ๋Š”๋ฐ, ๊ทธ๊ฒŒ ๋ฌด์Šจ ๋ง์ธ๊ฐ€?

 

A. ์ž๋™์ฐจ์™€ ๊ด€๋ จ๋œ ์„ค๊ณ„๋„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ๋‹ค.

// ์ถœ์ฒ˜ - jongtachi๋‹˜

// ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค ์„ค๊ณ„๋„(ํด๋ž˜์Šค)
class Car {
    String brand;
    String model;

    // ์„ค๊ณ„๋„๋ฅผ ๋”ฐ๋ผ ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•(์ƒ์„ฑ์ž)
    public Car(String brand, String model) {
        this.brand = brand;
        this.model = model;
    }
}

public class Main {
    public static void main(String[] args) {
    
        // ์‹ค์ œ ์ฐจ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •(์ธ์Šคํ„ด์Šค)
        Car myCar = new Car("Toyota", "Camry");

        System.out.println("๋ธŒ๋žœ๋“œ: " + myCar.brand);
        System.out.println("๋ชจ๋ธ: " + myCar.model);
    }
}

 

 

 

 


 

 

 

 

โ–บ ์ƒ์„ฑ์ž

  • ์ƒ์„ฑ์ž์˜ ์ด๋ฆ„์€ ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๋™์ผํ•ด์•ผํ•œ๋‹ค.
  • ๋ฆฌํ„ดํƒ€์ž…์ด ์—†๋‹ค.
  • ๋งค๊ฐœ๋ณ€์ˆ˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค. (์˜ค๋ฒ„๋กœ๋”ฉ)
  • ์ƒ์„ฑ์ž ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ, ์ƒ์„ฑ์ž ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์„ ์‹œ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

Q. ๋งค๊ฐœ๋ณ€์ˆ˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค๋ผ๋Š” ๋ง์ด ๋ฌด์Šจ ๋ง์ผ๊นŒ?

 

A. ๋งค๊ฐœ๋ณ€์ˆ˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค๋ผ๋Š” ๋ง์€ ์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์„ ์˜๋ฏธํ•œ๋‹ค. 

์•„๋ž˜ ์˜ˆ์ œ์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜(year, model)์— ๋”ฐ๋ผ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ ์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๊ฐ™์€ ํƒ€์ž…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋‹ˆ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์•ผํ•œ๋‹ค.

// ์ถœ์ฒ˜ - jongtachi๋‹˜์˜ ์ฝ”๋“œ ์ˆ˜์ •

class Car {
    int year;
    String model;

    // ๋…„๋„๋งŒ ๋ฐ›๋Š” ์ƒ์„ฑ์ž
    public Car(int year) {
        this.year = year;
        this.model = "๋ฐ›์ง€ ์•Š์Œ";
    }

    // ๋ชจ๋ธ๋งŒ ๋ฐ›๋Š” ์ƒ์„ฑ์ž
    public Car(String model) {
        this.year = 0;
        this.model = model;
    }

    // ๋…„๋„, ๋ชจ๋ธ ๋ฐ›๋Š” ์ƒ์„ฑ์ž
    public Car(int year, String model) {
        this.year = year;
        this.model = model;
    }

    public void resultPrint() {
        System.out.println("Year: " + year + "   " + "Model: " + model);
    }
}

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

            // ๋…„๋„๋งŒ ์•„๋Š” ๊ฒฝ์šฐ
            Car car1 = new Car(2024);
            car1.resultPrint();

            // ๋ชจ๋ธ๋งŒ ์•„๋Š” ๊ฒฝ์šฐ
            Car car2 = new Car("Camry");
            car2.resultPrint();

            // ๋…„๋„์™€ ๋ชจ๋ธ๋งŒ ์•„๋Š” ๊ฒฝ์šฐ
            Car car3 = new Car(2024, "Camry");
            car3.resultPrint();


        }
    }

 

 

 

 

Q. ์ƒ์„ฑ์ž ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์„ ์‹œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์Šจ ๋ง์ธ๊ฐ€?

A.  ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ  ์–ด๋–ค ์ƒ์„ฑ์ž๋„ ์—†์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. 

// ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค ์„ค๊ณ„๋„(ํด๋ž˜์Šค)
class Car {
    int year;
    String model;

	// ์–ด๋–ค ์ƒ์„ฑ์ž๋„ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
    
    public void resultPrint() {
        System.out.println("Brand: " + year + "   " + "Model: " + model);
    }
}

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

            // car1 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
            Car car1 = new Car();
            car1.resultPrint();


        }
    }

 

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ฒฐ๊ณผ๊ฐ’์€ ์ถœ๋ ฅ๋œ๋‹ค.

์ž๋™์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ ๊ฒƒ์ด๋‹ค.

 

 

๊ทธ๋Ÿฐ๋ฐ ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜๋ผ๋„ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.

// ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค ์„ค๊ณ„๋„(ํด๋ž˜์Šค)
class Car {
    int year;
    String model;


    // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž
    public Car() {

    }


    // ๋ธŒ๋žœ๋“œ, ๋ชจ๋ธ ๋ฐ›๋Š” ์ƒ์„ฑ์ž
    public Car(int year, String model) {
        this.year = year;
        this.model = model;
    }

    public void resultPrint() {
        System.out.println("Brand: " + year + "   " + "Model: " + model);
    }
}

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

            // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•  ์ธ์Šคํ„ด์Šค
            Car car1 = new Car();
            car1.resultPrint();


            Car car2 = new Car(2024, "Camry");
            car2.resultPrint();


        }
    }

 

 

๋งŒ์•ฝ ์•ˆ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด?

// ์ž๋™์ฐจ๋ฅผ ๋งŒ๋“ค ์„ค๊ณ„๋„(ํด๋ž˜์Šค)
class Car {
    int year;
    String model;


    // ๋ธŒ๋žœ๋“œ, ๋ชจ๋ธ ๋ฐ›๋Š” ์ƒ์„ฑ์ž
    public Car(int year, String model) {
        this.year = year;
        this.model = model;
    }

    public void resultPrint() {
        System.out.println("Brand: " + year + "   " + "Model: " + model);
    }
}

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

            // ๊ธฐ๋ณธ์ƒ์„ฑ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
            Car car1 = new Car();
            car1.resultPrint();


            Car car2 = new Car(2024, "Camry");
            car2.resultPrint();


        }
    }

 

 

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

Q. ์ƒ์„ฑ์ž๋Š” ์™œ ๋งŒ๋“œ๋Š” ๊ฒƒ์ธ๊ฐ€?

 

A. ๋‹ค์–‘ํ•œ ์ด์œ ๊ฐ€ ์žˆ์ง€๋งŒ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ผญ ํ•„์š”ํ•œ ๊ฐ’๋“ค์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ๋กœ ๋Œ€๋ถ€๋ถ„ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋ฉด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿด๋•Œ ํšŒ์›๋‹˜์˜ ์„ฑํ•จ๊ณผ ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ฃผ์†Œ ๋“ฑ ๋‚ด๊ฐ€ ๋งŒ๋“ค ํ”„๋กœ๊ทธ๋žจ์— ๊ผญ ์“ฐ์ผ ์ •๋ณด๋ฅผ ๋ฐ›๋„๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ์™ธ์—๋„ ์œ ์ง€๋ณด์ˆ˜๋ฉด, ์ผ๊ด€์„ฑ ๋“ฑ์ด ์žˆ๋‹ค.

 

 

 

 


 

 

 

โ–บ ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter)

  • ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ƒ์„ฑ์ž๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ๋•Œ ์–ด๋–ค ๊ฐ’์„ ๋ฐ›์„์ง€ ๋ช…์‹œํ•˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

 

โ–บ ์ธ์ž(Argument)

  • ์ธ์ž๋Š” ์ƒ์„ฑ์ž๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‹ค์ œ๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ด๋‹ค.

 

 

Q. ๊ทธ๋ž˜์„œ ๋‘˜์ด ๋ญ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ธ๊ฐ€?

 

A. ์ง€๊ธˆ๊นŒ์ง€ ๋ด์˜จ ์ฝ”๋“œ์— ๋งค๊ฐœ๋ณ€์ˆ˜, ์ธ์ž ๋ชจ๋‘ ๋‚˜ํƒ€๋‚˜์žˆ๋‹ค.

    // ๋ธŒ๋žœ๋“œ, ๋ชจ๋ธ ๋ฐ›๋Š” ์ƒ์„ฑ์ž
    public Car(int year, String model) {
        this.year = year;
        this.model = model;
    }

 

์—ฌ๊ธฐ์—์„œ year๊ณผ model์€ ๋งค๊ฐœ๋ณ€์ˆ˜์ด๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฉ”์„œ๋“œ๋‚˜ ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•  ๋•Œ ์–ด๋–ค ๊ฐ’์„ ๋ฐ›์„์ง€ ๋ช…์‹œํ•˜๋Š” ๋ณ€์ˆ˜๋ผ๊ณ  ํ–ˆ๊ณ  Car๋Š” ์ƒ์„ฑ์ž๋กœ ๋ณ€์ˆ˜๋ฅผ year์€ ์ •์ˆ˜ํ˜•์œผ๋กœ model์€ ๋ฌธ์ž์—ด๋กœ ๋ฐ›๊ฒ ๋‹ค๊ณ  ๋ช…์‹œํ•œ ๊ฒƒ์ด๋‹ค.

 

Car car2 = new Car(2024, "Camry");
car2.resultPrint();

 

๊ทธ๋ ‡๋‹ค๋ฉด 2024์™€ Camry๋Š” ์ธ์ž๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ์ธ์ž๋Š” ์ƒ์„ฑ์ž๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‹ค์ œ๋กœ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ด๋‹ˆ 2024์™€ Camry๊ฐ€ ๋œ๋‹ค๋Š” ๊ฑธ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

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

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

 

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

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

 

 


 

 

< ์ดํ›„ ํฌ์ŠคํŒ… - static๊ณผ final>

 

 

Java ๊ธฐ๋ณธ ์šฉ์–ด ์ •๋ฆฌ - ๐Ÿง ์ž์ฃผ ํ•จ๊ป˜ ์“ฐ์ด๋Š” static๊ณผ final

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

post-this.tistory.com

 

 


 

- ์ธ์Šคํ„ด์Šค ์ถœ์ฒ˜

 

๊ฐ์ฒด(object), ํด๋ž˜์Šค(class), ์ธ์Šคํ„ด์Šค(instance)

ํด๋ž˜์Šค(Class) ๋ž€ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๊ธฐ ์œ„ํ•œ ์„ค๊ณ„๋„ ํ˜น์€ ํ‹€ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ์˜ ์ง‘ํ•ฉ ๊ฐ์ฒด(Object) ๋ž€ ์†Œํ”„ํŠธ์›จ์–ด ์„ธ๊ณ„์— ๊ตฌํ˜„ํ•  ๋Œ€์ƒ ํด๋ž˜์Šค์— ์„ ์–ธ๋œ ๋ชจ์–‘ ๊ทธ๋Œ€๋กœ ์ƒ์„ฑ๋œ ์‹ค์ฒด ํŠน์ง• 1)

joy-baek.tistory.com

 

 

- jongtachi๋‹˜ ์˜ˆ์ œ ์ถœ์ฒ˜

 

[IT Info] ์ธ์Šคํ„ด์Šค(Instance)์™€ ๊ฐ์ฒด(Object)

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐœ๋…์ธ ์ธ์Šคํ„ด์Šค(Instance)์™€ ๊ฐ์ฒด(Object)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ์„ค๋ช…๋“œ๋ฆด ๋‚ด์šฉ์€ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์ด ๋‘ ์šฉ์–ด๋Š”

jongtachi.tistory.com

 

 

- ์ƒ์„ฑ์ž์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถœ์ฒ˜

 

[Java] ์ž๋ฐ” - ์ƒ์„ฑ์ž์˜ ๋ชฉ์ , ํŠน์ง•, ์‚ฌ์šฉ๋ฒ• (Constructor)

์ž๋ฐ” - ์ƒ์„ฑ์ž์˜ ๋ชฉ์ , ํŠน์ง•, ์‚ฌ์šฉ๋ฒ• 1. ์ƒ์„ฑ์ž์˜ ๋ชฉ์  ์ƒ์„ฑ์ž(Constructor)๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํŠน์ˆ˜ ๋ชฉ์ ์˜ ๋ฉค๋ฒ„ํ•จ์ˆ˜(๋ฉ”์†Œ๋“œ)๋กœ ๊ฐ์ฒด์˜ ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 2. ์ƒ์„ฑ์ž์˜ ํŠน

kadosholy.tistory.com

 

 

- ์ƒ์„ฑ์ž์™€ ์˜ค๋ฒ„๋กœ๋”ฉ ์ถœ์ฒ˜

 

[java] ์ƒ์„ฑ์ž ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ธฐ! (with. this)

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ฉ”์„œ๋“œnew ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ํ˜ธ์ถœ \- Person person1 = new Person();์ผ๋ฐ˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๋‚˜ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ์‹คํ–‰๋ผ์•ผ ํ•˜๋Š” ์ž‘์—… ์ •๋ฆฌํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๋™์ผ๋ฆฌํ„ด

velog.io

 

 

- ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ž์˜ ์ฐจ์ด ์ถœ์ฒ˜

 

Parameter์™€ Argument / ๋งค๊ฐœ๋ณ€์ˆ˜, ์ธ์ž ๊ทธ๋ฆฌ๊ณ  ์ธ์ˆ˜ ์šฉ์–ด ๊ตฌ๋ถ„

์šฉ์–ด์ •๋ฆฌ ํ™•์‹คํ•˜๊ฒŒ ํ•ด๋ณด์ž

velog.io

 

 

 

 

๐Ÿชฝ

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

 

 

 

 

โ–บ ๋ณ€์ˆ˜

๋ณ€์ˆ˜๋ž€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„์ด ๋ถ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋‹ค.

๋ณ€์ˆ˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์œ„์น˜์— ๋”ฐ๋ผ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜๋ฅผ ์ •ํ•œ๋‹ค.

 

 

1. ํด๋ž˜์Šค ๋ณ€์ˆ˜ (์ „์—ญ๋ณ€์ˆ˜)

 

ํด๋ž˜์Šค ๋ณ€์ˆ˜์˜ ํŠน์ง•์€ ํฌ๊ฒŒ ๋„ค๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • ๋ณ€์ˆ˜ ํƒ€์ž… ์•ž์— static์„ ๋ถ™์ธ๋‹ค.
  • ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ํ•œ๋‹ค.
  • ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณตํ†ต๋œ ๊ฐ’์„ ๊ณต์œ ํ•œ๋‹ค.
  • ํด๋ž˜์Šค ์ด๋ฆ„, ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ช…์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Q. ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ ๋œ๋‹ค๋Š” ๋ง์ด ๋ฌด์Šจ ์˜๋ฏธ์ธ๊ฐ€?

 

A. ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋Š” ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ๋งˆ์„์— ๋†“์ธ ์šฐ์ฒดํ†ต์ด๊ณ  ์ธ์Šคํ„ด์Šค๋Š” ์ง‘์ด๋ผ๊ณ  ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง‘(์ธ์Šคํ„ด์Šค)๋Š” ์šฐ์ฒดํ†ต(ํด๋ž˜์Šค ๋ณ€์ˆ˜)์— ํŽธ์ง€๋ฅผ ๊บผ๋‚ผ์ˆ˜๋„ ํŽธ์ง€๋ฅผ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋ชจ๋“  ์ง‘์ด ๋˜‘๊ฐ™์€ ์šฐ์ฒดํ†ต์„ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์ง‘์—์„œ ๋„ฃ์€ ํŽธ์ง€๋ฅผ ๋‹ค๋ฅธ ์ง‘์—์„œ ๊บผ๋‚ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

// chat-GPT๋ฅผ ํ†ตํ•ด ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

class Counter {

    // static์ด ๋ถ™์€ ๊ฒƒ์„ ํ†ตํ•ด ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    // ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ–ˆ๋‹ค.
    static int count = 0;  

    // ์ƒ์„ฑ์ž Counter๋ฅผ ํ†ตํ•ด new Counter()๊ฐ€ ์žˆ์œผ๋ฉด count ๋ณ€์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋„๋ก ํ–ˆ๋‹ค.
    Counter() {
        count++;  
    }
 
    // ํ˜„์žฌ count๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ฆ๊ฐ€ํ–ˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
    void showCount() {
        System.out.println("Count: " + count);
    }
}

public class Main {
    public static void main(String[] args) {
    
    	// ์ธ์Šคํ„ด์Šค c1๊ณผ c2๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋‹ค.
    	// ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด count++๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
        // c1๊ณผ c2๋กœ count++๊ฐ€ ์ด ๋‘ ๋ฒˆ ์‹คํ–‰๋˜์—ˆ๋‹ค.
        Counter c1 = new Counter();  
        Counter c2 = new Counter();  

        // ์ด c1๊ณผ c2๋Š” showCount ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.
        // ๊ฒฐ๊ณผ๊ฐ’์€ 2๊ฐ€ ๋œ๋‹ค.
        // 2๊ฐ€ ๋‚˜์˜ค๋Š” ์ด์œ ๋Š” ๋™์ผํ•œ ํด๋ž˜์Šค ๋ณ€์ˆ˜ count๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
        c1.showCount();  
        c2.showCount();  
    }
}

 

 

 

 

 


 

 

 

 

 

2. ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ (์ „์—ญ๋ณ€์ˆ˜)

 

 

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์˜ ํŠน์ง•์€ ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด์•ผ ๋ณ€์ˆ˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
  • ํด๋ž˜์Šค ๊ฐ์ฒด์™€ ๋‹ค๋ฅด๊ฒŒ ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๊ณ ์œ ํ•œ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค ๋ณ€์ˆ˜์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๋Š” ์˜ˆ์ œ๋ฅผ ์ฐพ์•˜๋‹ค.

// ์ถœ์ฒ˜ - sujinhope๋‹˜
public class Main {

    public static class StaticTest {

	// ํด๋ž˜์Šค ๋ณ€์ˆ˜
        static int classVar = 10;
        //์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
        int instanceVar = 28;

    }


    public static void main(String[] args) {

	// staticTest1๊ณผ staticTest2์ธ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑํ–ˆ๋‹ค.
        StaticTest staticTest1 = new StaticTest();
        StaticTest staticTest2 = new StaticTest();
        
        // ์‹คํ–‰ ๊ฐ’์€ 1๋ฒˆ๊ณผ 2๋ฒˆ ๋ชจ๋‘ 10๊ณผ 28์ด ๋œ๋‹ค.
        System.out.println("1๋ฒˆ " + staticTest1.classVar + ", " + staticTest1.instanceVar);
        System.out.println("2๋ฒˆ " + staticTest2.classVar + ", " + staticTest2.instanceVar);

	// ํด๋ž˜์Šค ๋ณ€์ˆ˜ staticTest1์˜ ๊ฐ’์„ 12๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค.
        staticTest1.classVar = 12;
        // ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ staticTest1์˜ ๊ฐ’์„ 400์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค.
        staticTest1.instanceVar = 400;

        System.out.println();
        // 1๋ฒˆ์˜ ์ถœ๋ ฅ๊ฐ’์€ 12์™€ 400์ด ๋œ๋‹ค.
        // 2๋ฒˆ์˜ ์ถœ๋ ฅ๊ฐ’์€ 12์™€ 28์ด ๋œ๋‹ค.
        System.out.println("1๋ฒˆ " + staticTest1.classVar + ", " + staticTest1.instanceVar);
        System.out.println("2๋ฒˆ " + staticTest2.classVar + ", " + staticTest2.instanceVar);;
    }
}

 

ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค์˜ ๋ชจ๋“  ๊ฐ’์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ’์„ ๋ณ€๊ฒฝ๋œ๋‹ค. 
์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค์˜ ๊ฐ’์„ ๊ณต์œ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐ’์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

 

Q. ํด๋ž˜์Šค, ์ธ์Šคํ„ด์Šค, ํด๋ž˜์Šค ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€?

 

A. ๋น„์œ ๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ๋‹ค. [ ํด๋ž˜์Šค๋Š” ๋นตํ‹€  ,  ์ธ์Šคํ„ด์Šค๋Š” ๋นตํ‹€๋กœ ์ฐ์–ด๋‚ธ ๋นต  ,  ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ๋นต์— ํ‘œ์‹์„ ๋‚จ๊ธฐ๋Š” ๋นต์ง‘์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜(?)  ,  ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” ๋นต ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ์žผ ]์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 


 

 

 

 

 

3. ์ง€์—ญ๋ณ€์ˆ˜

  • ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์„ ์–ธ๋œ๋‹ค.
  • ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.
  • ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธ๋˜์–ด ์‚ฌ๋ผ์ง„๋‹ค.

 

// ์ถœ์ฒ˜ - sujinhope๋‹˜
public class Main {

    public static class StaticTest {

	// ์ „์—ญ๋ณ€์ˆ˜ ์ค‘ ํ•˜๋‚˜์ธ ํด๋ž˜์Šค ๋ณ€์ˆ˜์ด๋‹ค.
        static int classVar = 10;
        // ์ „์—ญ๋ณ€์ˆ˜ ์ค‘ ํ•˜๋‚˜์ธ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์ด๋‹ค.
        int instanceVar = 28;

	// ๋ฉ”์„œ๋“œ์ธ method๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
        public void method() {
            // ์ง€์—ญ๋ณ€์ˆ˜ localVar
            int localVar = -100;
            System.out.println("์ง€์—ญ ๋ณ€์ˆ˜ ๊ฐ’ : " + localVar);
        }

    }


    public static void main(String[] args) {

	// localTest ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
        StaticTest localTest = new StaticTest();
	// ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•ด method ์‹คํ–‰ํ•œ๋‹ค.
        localTest.method();
    }
}

 

 

 

 

 

 

 

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

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

 

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

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

 

 

 

 


 

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

 

 

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

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

post-this.tistory.com

 

 


 

 

- ๋ณ€์ˆ˜์˜ ๊ฐœ๋… ์ •๋ฆฌ ์ถœ์ฒ˜

 

[JAVA] ์ž๋ฐ”์˜ ๋ณ€์ˆ˜ (ํด๋ž˜์Šค ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜)

์ด ๊ธ€์€ PC ๋ฒ„์ „ TISTORY์— ์ตœ์ ํ™” ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์„ ์–ธ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜ ์ž๋ฐ”์—์„œ์˜ ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜๋ฅผ ๊ฒฐ์ •์ง“๋Š” ๊ฒƒ์€ '๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ

itmining.tistory.com

 

 

- sujinhope๋‹˜์˜ ์˜ˆ์ œ ์ถœ์ฒ˜

 

[java] ํด๋ž˜์Šค๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ์ฐจ์ด(static๋ณ€์ˆ˜์™€ non Static๋ณ€์ˆ˜) - Break Out of Your Comfort Zone

๋ชฉ์ฐจ ํด๋ž˜์Šค ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ํด๋ž˜์Šค ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๋Š” ์œ„์น˜ ํด๋ž˜์Šค ๋ณ€์ˆ˜(Static)์˜ ์ฃผ์˜์ , ํด๋ž˜์Šค ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ํด๋ž˜์Šค ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜

sujinhope.github.io

 

 

- ์ „์—ญ๋ณ€์ˆ˜์™€ ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฐœ๋… ์ •๋ฆฌ ์ถœ์ฒ˜

 

๊ตฌ๋ฆ„EDU - ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋งž์ถคํ˜• IT๊ต์œก

๊ตฌ๋ฆ„EDU๋Š” ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋งž์ถคํ˜• IT๊ต์œก ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ/ํ•™๊ต/๊ธฐ์—… ๋ฐ ๊ธฐ๊ด€ ๋ณ„ ์ตœ์ ํ™”๋œ IT๊ต์œก ์†”๋ฃจ์…˜์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”. ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹ค๋ฌด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต์œก, ์ „๊ตญ ์ดˆ์ค‘๊ณ /๋Œ€ํ•™๊ต ์˜จ๋ผ์ธ ์ˆ˜์—…, ๊ธฐ์—…/

edu.goorm.io

 

 

- chatGPT์˜ ๋„์›€๋„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

+ Recent posts