์ƒ์„ฑ์ž์—์„œ this()์™€ super()์˜ ์—ญํ• ๊ณผ ๊ทœ์น™์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

 

Java์—์„œ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฒซ ์ค„์— this() ๋˜๋Š” super()๋ฅผ ๊ผญ ์จ์•ผ ํ•˜๋ฉฐ,

๋‘˜ ๋‹ค ๋™์‹œ์— ์“ธ ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด,

์ƒ์„ฑ์ž์˜ ์—ญํ• ๊ณผ ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.


1. ์ƒ์„ฑ์ž์˜ ์—ญํ• 

 

์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

1.1  ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ˜ธ์ถœ (super())

 ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ๊ฒฝ์šฐ, ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ธฐ ์ „์— ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ดˆ๊ธฐํ™” ์ž‘์—…์ด ๋จผ์ € ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค.

 

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

 

 ๊ทธ๋ž˜์„œ Java๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” super()๋ฅผ ๊ฐ•์ œํ•œ๋‹ค.

 

1.2 ์ž์‹ ์˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ (this())

 ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์—ฌ๋Ÿฌ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์„ ๋•Œ, ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ™์€ ํด๋ž˜์Šค ์•ˆ์—์„œ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, this()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.


2. ์ฒซ ์ค„์— this() ๋˜๋Š” super()๋ฅผ ์ ์–ด์•ผ ํ•˜๋Š” ์ด์œ 

Java๋Š” “๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ถ€ํ„ฐ ์ œ๋Œ€๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด์•ผ ํ•œ๋‹ค”๋Š” ์›์น™์„ ๋”ฐ๋ฅธ๋‹ค.


2.1 super()์˜ ์—ญํ• 

์ƒ์† ๊ด€๊ณ„์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ดˆ๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด, ์ž์‹ ํด๋ž˜์Šค๋Š” ์ œ๋Œ€๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์—†๋‹ค.

๊ทธ๋ž˜์„œ super()๊ฐ€ ์ƒ์„ฑ์ž์˜ ์ฒซ ์ค„์— ์—†์œผ๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค.

 

์˜ˆ์‹œ:

class Parent {
    Parent() {
        System.out.println("Parent ์ƒ์„ฑ์ž ํ˜ธ์ถœ!");
    }
}

class Child extends Parent {
    Child() {
        // ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ super() ์‚ฝ์ž…!
        System.out.println("Child ์ƒ์„ฑ์ž ํ˜ธ์ถœ!");
    }
}

 

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

Parent ์ƒ์„ฑ์ž ํ˜ธ์ถœ!
Child ์ƒ์„ฑ์ž ํ˜ธ์ถœ!

 


2.2 this()์˜ ์—ญํ• 

๋งŒ์•ฝ ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ ๋น„์Šทํ•œ ์ดˆ๊ธฐํ™” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, ์ž์‹ ์˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ:

class MyClass {
    MyClass() {
        this(100);  // ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        System.out.println("๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ!");
    }

    MyClass(int value) {
        System.out.println("๊ฐ’์„ ๊ฐ€์ง„ ์ƒ์„ฑ์ž ํ˜ธ์ถœ! value = " + value);
    }
}

 

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

๊ฐ’์„ ๊ฐ€์ง„ ์ƒ์„ฑ์ž ํ˜ธ์ถœ! value = 100
๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ!

 

3. this()์™€ super()๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ 

Java๋Š” ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™” ์ž‘์—…์ด ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ๋งŒ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

 

this()๋Š” ์ž๊ธฐ ์ž์‹ ์˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์ด๊ณ , super()๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ˜ธ์ถœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜ ๋‹ค ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

์ƒ์„ฑ์ž์˜ ์ฒซ ์ค„์—์„œ:

  1. this()๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” ๊ฒฐ๊ตญ ๊ทธ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž์—์„œ ํ˜ธ์ถœํ•œ๋‹ค.

  2. super()๊ฐ€ ์žˆ์œผ๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฉฐ, ์ž๊ธฐ ํด๋ž˜์Šค์˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋Š” ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

์ถฉ๋Œ ์ด์œ :

  • this()์™€ super() ๋‘˜ ๋‹ค ์ฒซ ์ค„์— ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋‘˜ ๋‹ค ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋ฉด, Java๊ฐ€ ์–ด๋А ๊ฒฝ๋กœ๋ฅผ ๋จผ์ € ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ชจํ˜ธํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.  

 


 

์ƒ์„ฑ์ž ํ˜ธ์ถœ ์ˆœ์„œ๋Š”

์ง‘์„ ์ง€์„ ๋•Œ, ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” “๊ธฐ์ดˆ ๊ณต์‚ฌ”,

์ž์‹ ํด๋ž˜์Šค๋Š” “์ง‘ ๋‚ด๋ถ€ ๊ณต์‚ฌ”๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 super()๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ๊ธฐ์ดˆ ๊ณต์‚ฌ๋ฅผ ๋จผ์ € ํ•˜๊ฒŒ ํ•˜๋Š” ์—ญํ• ์ด๋‹ค.

 this()๋Š” ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ๋น„์Šทํ•œ ๊ณต์‚ฌ๋ฅผ ์žฌํ™œ์šฉํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์—ญํ• ์ด๋‹ค.

 ๊ธฐ์ดˆ ๊ณต์‚ฌ(super())์™€ ๋‚ด๋ถ€ ๊ณต์‚ฌ ์žฌํ™œ์šฉ(this())์„ ๋™์‹œ์— ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์œผ๋‹ˆ, ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 


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

 

+ Recent posts