โ—‹ ์ถ”์ƒํด๋ž˜์Šค ( abstract : ๋ฏธ์™„์„ฑ์ด๋ผ๋Š” ์˜๋ฏธ )

 - ์„ ์–ธ๋งŒ ์žˆ๊ณ  ์ •์˜๊ฐ€ ์—†๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฉ”์†Œ๋“œ(์ถ”์ƒ ๋ฉ”์†Œ๋“œ)๋ฅผ ๊ฐ–๋Š” ํด๋ž˜์Šค๋กœ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(overriding)     ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋‚ญ๋น„ ์—†์ด ๋ฏธ๋ฆฌ ํ˜ธ์ถœ ํ•  ๊ณ„ํš์„ ์„ธ์›Œ ๋‘๊ธฐ ์œ„ํ•ด ๋งŒ๋“ ๋‹ค.

 

โ—‹ ํ˜•์‹ ๋ฐ ๊ตฌ์กฐ

    [์ ‘๊ทผ ์ œ์–ด์ง€์‹œ์ž] abstract class ํด๋ž˜์Šค๋ช…{

  

    [์ ‘๊ทผ ์ œ์–ด์ง€์‹œ์ž] abstract ์ž๋ฃŒํ˜• ๋ฉ”์†Œ๋“œ๋ช…([๋งค๊ฐœ๋ณ€์ˆ˜], ...);  //๋ฉ”์†Œ๋“œ์˜ ์„ ์–ธ๋ถ€๋งŒ ์ž‘์„ฑํ•œ๋‹ค.

 

    }

 

    ์ œ์–ด์ž - 1. ์ ‘๊ทผ์ œ์–ด ์ง€์‹œ์ž : public , protected , default , private

                - 2.  ๊ทธ์™ธ ์ง€์‹œ์ž : static, final , abstract , ...๋“ฑ๋“ฑ 

     **๋‹จ, ์ ‘๊ทผ ์ œ์–ด์ง€์‹œ์ž๋Š” ๋„ค๊ฐ€์ง€์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ์ œ์–ด์ž๋“ค ๊ฐ„์˜ ์ˆœ์„œ๋Š” ๊ด€๊ณ„์—†์ง€๋งŒ ์ฃผ๋กœ ์ ‘๊ทผ           ์ œ์–ด ์ง€์‹œ์ž๋ฅผ ์ œ์ผ ์™ผ์ชฝ์— ๋†“๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.

 

โ—‹ ํŠน์ง•

     ํด๋ž˜์Šค๊ฐ€ ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•  ๋•Œ ๊ทธ ํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค ์•ž์—  'abstract' ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ 

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

      → ์ถ”์ƒ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†๋Š” ํด๋ž˜์Šค๋Š” ์™œ ์กด์žฌ ํ• ๊นŒ?

           - ํด๋ž˜์Šค ์ค‘ ํด๋ž˜์Šค์•ˆ์— ๋‚ด์šฉ์ด ์—†๋Š” ๋ฉ”์†Œ๋“œ๋งŒ ์กด์žฌํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋Ÿฐ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€                 ๋ชปํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํด๋ž˜์Šค ์•ž์— abstract๋ฅผ ๋ถ™์ธ๋‹ค. ๋‚˜์ค‘์— ์ƒ์†๋ฐ›์•„ ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ๋งŒ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜์—ฌ                ์‚ฌ์šฉํ•œ๋‹ค ('abstract'๊ฐ€ ๋ถ™์€ ๋ฉ”์†Œ๋“œ๋Š” ๋ฌด์กฐ๊ฑด ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผํ•œ๋‹ค.)

 

     ์ฆ‰, ์ถ”์ƒํด๋ž˜์Šค๋Š” ๋…๋ฆฝํด๋ž˜์Šค ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ ํ• ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์†์„ ์œ„ํ•ด์„œ๋งŒ ์กด์žฌํ•˜๋ฉฐ ์ถ”์ƒ ํด๋ž˜์Šค์—์„œ

     ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(overriding)ํ•ด์•ผํ•œ๋‹ค.

 

** 'abstract' ํ‚ค์›Œ๋“œ๋Š” ํด๋ž˜์Šค์™€ ๋ฉ”์†Œ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ , ๋กœ์ปฌ๋ณ€์ˆ˜์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

     ํด๋ž˜์Šค - ํด๋ž˜์Šค ๋‚ด์— ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๊ฐ€ ์„ ์–ธ ๋˜์–ด ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

     ๋ฉ”์†Œ๋“œ - ์„ ์–ธ๋ถ€๋งŒ ์ž‘์„ฑํ•˜๊ณ  ๊ตฌํ˜„๋ถ€๋Š” ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ์ถ”์ƒ ๋ฉ”์„œ๋“œ์ž„์„ ์•Œ๋ฆฐ๋‹ค.

 

 

 

            

 

1. this()

 - ์ƒ์„ฑ์ž ์•ˆ์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉ ํ• ์ˆ˜ ์žˆ๋‹ค.

 - ํด๋ž˜์Šค๋ช…์™€ ๊ฐ™์€ ์ƒ์„ฑ์ž๋ช…์ด ์•„๋‹Œ this()๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค

    ? ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ ํ• ๋•Œ ์ƒ์„ฑ์ž๋ช…์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด ๋” ํŽธํ•  ๊ฒƒ ๊ฐ™์€๋ฐ ์™œ this๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๊ฑธ๊นŒ?

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

 -  ํ•œ ์ƒ์„ฑ์ž์—์„œ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ ํ• ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ์ฒซ์ค„์—๋งŒ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

    ? ์ƒ์„ฑ์ž ์•ˆ์—์„œ ์ด๋ฏธ ์ดˆ๊ธฐํ™”๋ฅผ ๋‹ค ํ–ˆ๋Š”๋ฐ ๋งˆ์ง€๋ง‰์— ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด ์œ„์— ์ดˆ๊ธฐํ™” ๋˜์—ˆ๋˜ ๊ฒƒ๋“ค์ด  ๋ฌด์˜๋ฏธ ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ œ์ผ ์ฒซ์ค„์— ํ˜ธ         ์ถœ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

โ˜…โ˜…โ˜…โ˜…โ˜… ๊ธฐ์–ตํ•˜๊ธฐ) 1.์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ ํ• ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ์ฒซ์ค„์— ํ˜ธ์ถœํ•˜๊ธฐ 2. ํด๋ž˜์Šค๋ช…์ด ์•„๋‹Œ this๋กœ ํ˜ธ์ถœํ•˜๊ธฐ

 

 

 

โ—‹ ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์˜ˆ์ œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Con{
            int x;
    
        Con(){
            
            //์ƒ์„ฑ์ž ํ˜ธ์ถœ
            this(1000);        
            
            x = 10;
            System.out.println("์ธ์ž๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž");
            System.out.println("Con์ด ๊ฐ–๊ณ ์žˆ๋Š” x: " +this.x);
        }
 
        Con(int x){
            
            this.x=x;
            System.out.println("์ธ์ž๊ฐ€ ํ•˜๋‚˜์ธ ์ƒ์„ฑ์ž");
            System.out.println("Con ์ด ๊ฐ–๊ณ ์žˆ๋Š” x: " +this.x);
 
        }
 
    public static void main(String[] args){
    
        Con ob1 = new Con();
        
    }
 
 

 

์‹คํ–‰๊ฒฐ๊ณผ

์ฝ”๋“œ ์„ค๋ช…)

24๋ฒˆ์ค„) Con ๊ฐ์ฒด ob1์ด ์ƒ์„ฑ ๋˜๋ฉด์„œ Con() ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ ๋œ๋‹ค.
4๋ฒˆ์ค„) con()์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ ๋˜๋ฉด์„œ
7๋ฒˆ์ค„) ์ œ์ผ ์ฒซ์ค„์— this(1000)์ด ํ˜ธ์ถœ ๋˜์—ˆ์œผ๋ฏ€๋กœ
14๋ฒˆ์ค„)Con(1000)์ด ํ˜ธ์ถœ ๋˜๋ฉด์„œ
16๋ฒˆ์ค„)x์˜ ๊ฐ’์€ 1000์ด ๋œ๋‹ค. ์ƒ์„ฑ์žํ˜ธ์ถœ์ด ๋๋‚˜๊ณ 
9๋ฒˆ์ค„)์›๋ž˜ Con()์œผ๋กœ ๋Œ์•„๊ฐ€ x=10์ด ๋“ค์–ด๊ฐ€์„œ  x์˜ ๊ฐ’์€ 10์œผ๋กœ ๋ฐ”๋€๋‹ค.

 

? ์—ฌ๊ธฐ์„œ ์˜๋ฌธ์  ?

Q. ์œ„์— ์ฝ”๋“œ๊ฐ™์ด ํ•˜๋ฉด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด ๋ดค์ž ์ดˆ๊ธฐํ™”ํ•œ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š”๋ฐ ์™œ ํ˜ธ์ถœํ•˜๋Š” ๊ฑธ๊นŒ?

1)

1
2
3
4
5
6
7
8
9
Car(){
    this("white",auto, 4);
}
 
Car(String color,String gearType , int door){
    this.color = color;
    this.gearType = gearType;
    this.door = door; 
}
 
2)
1
2
3
4
5
6
7
8
9
10
Car(){
    this.color = "white";
    this.gearType = auto;
    this.door = 4
}
 
// ์ƒ์„ฑ์ž ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด
Car(){ 
    this("white",auto, 4);
}

 

A. - 2๋ฒˆ ์ฝ”๋“œ์— ์œ„์— Car()์™€ ์•„๋ž˜ Car()๋Š” ๊ฐ™์€ ์ผ์„ ํ•˜์ง€๋งŒ ์•„๋ž˜ Car()๋Š” this ํ˜ธ์ถœ์„ ํ†ตํ•ด ์ดˆ๊ธฐํ™” ํ•ด์ฃผ๋ฏ€๋กœ ์ข€ ๋” ์ฝ”๋“œ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ํ• ์ˆ˜ ์žˆ๋‹ค.

   - ์ƒ์„ฑ์ž๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋กœ ๊ด€๊ณ„๊ฐ€ ๊น‰์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ์„œ๋กœ ํ˜ธ์ถœํ•˜๋„๋ก ํ•˜์—ฌ ์œ ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์–ป์œผ์ˆ˜ ์žˆ๊ณ  ์ˆ˜์ •์ด ํ•„์š”         ํ•œ ๊ฒฝ์šฐ์—๋„ ์ ์€ ์ฝ”๋“œ๋งŒ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.

 

 

 

 

 

 

โ—‹ ๋ฉค๋ฒ„๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

  1. ๋ช…์‹œ์  ์ดˆ๊ธฐํ™” (Explicit initialization)

  2. ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ (Initialized block)

  3. ์ƒ์„ฑ์ž (Constructor)

  

 

1. ๋ช…์‹œ์  ์ดˆ๊ธฐํ™” 

- ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๊ณผ ๋™์‹œ์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์„ ๋ช…์‹œ์  ์ดˆ๊ธฐํ™”๋ผ๊ณ  ํ•œ๋‹ค.

1
2
3
4
5
6
7
8
public class Con{
 
    int n=0;
    int m=0;
 
        :
        :    
    }
cs

 

2. ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ

- ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์—๋Š” ํด๋ž˜์Šค ์ดˆ๊ธฐํ™”๋ธ”๋Ÿญ๊ณผ ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์ด ์žˆ๋Š”๋ฐ ์˜ค๋Š˜์€ ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ๋งŒ ๋ณด๊ฒ ๋‹ค.
-์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์€ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”์— ์‚ฌ์šฉ๋œ๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Con{
 
    int n=0;
    int m=0;
    
 
    n=40;    //---==์—๋Ÿฌ
    
        :
        :
}
 
 
cs

- ํด๋ž˜์Šค ์•ˆ์—์„œ๋Š” ์—ฐ์‚ฐ ๋ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Con{
 
    int n=0;
    int m=0;
    
 
    {//์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ
        n=20;
        m=40;
                
    }
 
}
cs

- ํ•˜์ง€๋งŒ {}์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์—์„œ๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.
- ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ๋‚ด์—์„œ๋Š” ๋ฉ”์„œ๋“œ ์™€ ๊ฐ™์ด ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ๋“ฑ ์„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์–ด์„œ ๋ช…์‹œ์  ์ดˆ๊ธฐํ™”๋กœ ํ• ์ˆ˜ ์—†๋Š” ๋ณต์žกํ•œ      ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ํ• ์ˆ˜ ์žˆ๋‹ค.
- ์ดˆ๊ธฐํ™”๋ธ”๋Ÿญ์€ ์ƒ์„ฑ์ž๋ณด๋‹ค ๋จผ์ € ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ์ž๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๋‹ค.

    → ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์—์„œ ์ดˆ๊ธฐํ™” ํ–ˆ๋‹ค ํ•ด๋„ ์ƒ์„ฑ์ž์—์„œ ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๋ฉด ์ƒ์„ฑ์ž์˜ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ์ž์—์„œ์˜            ๊ฐ’์ด ์šฐ์„ ์‹œ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

- ์ƒ์„ฑ์ž ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ ์šฐ์„ ์ˆœ์œ„ ์˜ˆ์‹œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class Con{
 
    int n;
    int m;
    
    //์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ initialized block
    {
        n=20;
        m=40;
        System.out.println("์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ ์‹คํ–‰");
        
    }
    //์ƒ์„ฑ์ž(Constructor)
    Con(){
 
        n=100;
        m=200;
        System.out.println("์ƒ์„ฑ์ž ์‹คํ–‰...");
    }
    Con(int n ,int m){
 
        this.n=n;
        this.m=m;
        System.out.println("๋งค๊ฐœ๋ณ€์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ์ž ์‹คํ–‰");
    }
 
    void write(){
 
        System.out.println("n :" + n + ", m :" + m );
    }
 
    public static void main(String[] args){
 
        Con ob = new Con();
        ob.write();
        System.out.println();
 
        Con ob2= new Con(12344567);
        ob2.write();
        System.out.println();
 
    }
}

 

์ƒ์„ฑ์ž ์ดˆ๊ธฐํ™”๋ธ”๋Ÿญ ์šฐ์„ ์ˆœ์œ„ ์ถœ๋ ฅ๋ฌธ

 - ์ถœ๋ ฅ๋ฌธ์„ ๋ณด๋ฉด ob1,ob2 ๋‘ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ ๋  ๋•Œ ๋‘˜๋‹ค ์ƒ์„ฑ์ž๋ณด๋‹ค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์ด ๋จผ์ € ์‹คํ–‰ ๋œ๋‹ค.
- ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์ด ์‹คํ–‰ ๋˜์—ˆ๋”๋ผ๋„ ์ƒ์„ฑ์ž์—์„œ ๊ฐ’์„ ๋ฐ”๊ฟ” ์ฃผ๊ฒŒ ๋˜๋ฉด ๊ฐ’์€ ์ƒ์„ฑ์ž์˜ ๊ฒƒ์„ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ์ž์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋‹ค๊ณ  ํ•˜๋Š”๊ฒƒ์ด๋‹ค.

 

 

? ์—ฌ๊ธฐ์„œ  ์˜๋ฌธ์ ?

Q. ์ƒ์„ฑ์ž์—์„œ๋„ ์ดˆ๊ธฐํ™” ํ• ์ˆ˜ ์žˆ๋Š”๋ฐ ์™œ ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์ด ์žˆ์„๊นŒ?

 A1) ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์—์„œ๋Š” ๋ช…์‹œ์  ์ดˆ๊ธฐํ™”์—์„œ ํ• ์ˆ˜ ์—†๋Š” ๋ณต์žกํ•œ ์ž‘์—…์„ ํ†ตํ•œ ์ดˆ๊ธฐํ™”๋ฅผ ํ• ์ˆ˜ ์žˆ๋‹ค.

 A2) ์ƒ์„ฑ์ž๋“ค์˜ ๊ณตํ†ต์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ์— ๋„ฃ์–ด ์ค€๋‹ค๋ฉด ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•ด์ฃผ๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.

 

 

 

 

์„ ์–ธ ์œ„์น˜์— ๋”ฐ๋ฅธ ๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜ - ์ง€์—ญ๋ณ€์ˆ˜ , ์ „์—ญ ๋ณ€์ˆ˜

โ—‹ ์ง€์—ญ๋ณ€์ˆ˜ ( Local variable )

-  ๋ฉ”์†Œ๋“œ ์•ˆ์— ์ƒ์„ฑ ๋˜๊ณ  ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ”๋‹ค๊ฐ€ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋๋‚  ๋•Œ ์†Œ๋ฉธ ๋˜๋Š” ๋ณ€์ˆ˜.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class var{
 
    public static void main(String[] args){
 
        //์ง€์—ญ ๋ณ€์ˆ˜ n 
        int n;        
        //-- ์„ ์–ธํ›„ ์ดˆ๊ธฐํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š์€ ์ƒํƒœ
 
        System.out.println("n" + n);
        //--> ์—๋Ÿฌ ๋ฐœ์ƒ (์ปดํŒŒ์ผ ์—๋Ÿฌ)
        //    error: variable n might not have been initialized
        //--- ์ง€์—ญ ๋ณ€์ˆ˜ n ์— ์ ‘๊ทผํ•˜์—ฌ ๊ทธ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•˜๋Š” ๊ตฌ๋ฌธ
 
    }
cs

๋ฌธ์žฅ 9 ) ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™” ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†๋‹ค.

 

โ—‹ ์ „์—ญ๋ณ€์ˆ˜ ( Global variable)

- ์ „์—ญ ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค ์ฒซ๋ถ€๋ถ„์— ์ž‘์„ฑ ๋œ ๋ณ€์ˆ˜๋กœ ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค ๋ณ€์ˆ˜(static ๋ณ€์ˆ˜)๋กœ ๋‚˜๋ˆ ์ง€๊ฒŒ ๋œ๋‹ค.

    1. ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ (instance)

       : ํด๋ž˜์Šค ์˜์—ญ์—์„œ ์„ ์–ธ๋˜๋ฉฐ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ ๋  ๋•Œ ๋งˆ๋‹ค ๋งŒ๋“ค์–ด์ง€๊ณ  ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ๋งŒ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉ  ํ•   ์ˆ˜ ์žˆ๋‹ค.

    2.ํด๋ž˜์Šค ๋ณ€์ˆ˜ ( static )

       : ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ•˜๋‹ค.

 - ํด๋ž˜์Šค ๋ณ€์ˆ˜ vs ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜

      : ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋  ๋•Œ ๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ 

        ํด๋ž˜์Šค ๋ณ€์ˆ˜๋Š”  ๊ฐ์ฒด ์ƒ์„ฑ์ด ์—ฌ๋Ÿฌ๋ฒˆ ๋˜์–ด๋„ ํ•˜๋‚˜์˜ ์ €์žฅ๊ณต๊ฐ„์„ ๊ฐ€์ง„๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Gvar{
 
    //์ „์—ญ ๋ณ€์ˆ˜ ์„ ์–ธ
    int a;        
    boolean b;
    char c;
    double d;
 
    public static void main(String[] args){
        
        //System.out.println("a "+ a); 
        //-- non-static variable a cannot be referenced from a static context
        
        Gvar ob= new Gvar();
        System.out.println("int a     :" + ob.a);
        //์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š์•„๋„ ์ž๋ฐ”๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด์ค€๋‹ค.
 
        System.out.println("boolean b :" +ob.b);
 
        System.out.println("char c    :" +ob.c);
        
        System.out.println("double d  :" + ob.d);
    
 
    }
 
}
cs

๋ฌธ์žฅ 11 ) ๋ฌธ์žฅ 11๋ฒˆ์„ ๋ณด๋ฉด static ํ•จ์ˆ˜์—๋Š” staic๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

                  ->๊ทธ๋ž˜์„œ ๋ฐ”๋กœ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†๋‹ค.

๋ฌธ์žฅ 14 )  ๋ฐ”๋กœ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ—‹์ „์—ญ๋ณ€์ˆ˜ ๊ธฐ๋ณธ ์ดˆ๊ธฐํ™”๋œ ๊ฐ’

 

 

- int : 0

- boolean: false 

- char : ' '

- double : 0.0

- String :null

+ Recent posts