๋Œ€์™ธํ™œ๋™/CodePresso

์ฝ”๋“œํ”„๋ ˆ์†Œ ์ฒดํ—˜๋‹จ 4-1 : Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๊ธ‰

kite707 2022. 1. 18.

์ •๋ฆฌํ•˜๋‹ค๋ณด๋‹ˆ ๋‚ด์šฉ์ด ๊ธธ์–ด์ ธ์„œ 2๊ฐœ์˜ ๊ธ€์— ๋‚˜๋ˆ„์–ด ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ด๋ฒˆ ๊ฐ•์˜๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋ฌด์—‡์ธ์ง€, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๋Š” ๊ฐ•์˜์˜€๋‹ค.

 

๊ฐ์ฒด ์ง€ํ–ฅ vs ์ ˆ์ฐจ ์ง€ํ–ฅ

 

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Object Oriented Programming)์˜ ํŠน์ง•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ทธ๋ฃนํ™” ํ•œ ๊ฐ์ฒด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ SW๋ฅผ ์„ค๊ณ„ ๊ฐœ๋ฐœํ•˜๋Š” ํŒจ๋Ÿฌ๋‹ค์ž„
  • ์‹œ์Šคํ…œ์— ์ฐธ์—ฌํ•˜๊ณ  ์ฑ…์ž„์„ ๊ฐ–๋Š” ๊ฐ์ฒด๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ์ฃผ๋ชฉ
  • ๋‹ค์ˆ˜์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ์ž์˜ ์—ญํ• ์„ ํ•˜๊ณ , ๊ฐ์ฒด ๊ฐ„์—๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ ์ „์ฒด ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑ

 

 

์˜ˆ์‹œ๋ฅผ ๋“ค์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 ๐Ÿ’ก ์ปคํ”ผ์ˆ์„ ์šด์˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ง์› A, B, C๊ฐ€ ์žˆ๋Š” ์ƒํ™ฉ

A - ๋ฐ”๋ฆฌ์Šคํƒ€ํŒ€, B- ์ œ๋นตํŒ€, C- ์šด์˜ํŒ€์„ ๋งก๊ธด๋‹ค.

A๋Š” ์ปคํ”ผ๋ฅผ ๋‚ด๋ฆฌ๊ณ , B๋Š” ๋นต์„ ๊ตฝ๊ณ , C๋Š” ์†๋‹˜ ์‘๋Œ€๋ฅผ ํ•œ๋‹ค. → ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ 2๋ฒˆ์งธ ํŠน์ง•
๊ทธ๋ฆฌ๊ณ  C๋Š” ์ปคํ”ผ ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜ค๋ฉด A์—๊ฒŒ, ๋นต ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜ค๋ฉด B์—๊ฒŒ ์•Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค. → ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ 3๋ฒˆ์งธ ํŠน์ง•

๋งŒ์•ฝ ์ปคํ”ผ๋จธ์‹ ์ด ๊ณ ์žฅ๋‚ฌ๋‹ค๊ณ  ํ•  ๊ฒฝ์šฐ ๋ฐ”๋ฆฌ์Šคํƒ€ํŒ€์˜ A๋งŒ ๊ธฐ๊ณ„ ์‚ฌ์šฉ๋ฒ•์„ ํ•™์Šตํ•˜๋ฉด ๋œ๋‹ค.

 

 

์ด๋ฒˆ์—๋Š” ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ์ ˆ์ฐจ์ง€ํ–ฅ์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด์ž.

 

์œ„์—์„œ ๊ฐ์ฒด ์ง€ํ–ฅ์€ ๋‹ค์ˆ˜์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ์ž์˜ ์—ญํ• ์„ ํ•˜๊ณ , ๊ฐ์ฒด ๊ฐ„์—๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค. ๋ผ๊ณ  ํ–ˆ๋‹ค. ์ ˆ์ฐจ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ˆœ์ฐจ์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘์š”์‹œ ๋˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ ์ „์ฒด๊ฐ€ ์œ ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋„๋ก ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ด๋‹ค.

๋‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์˜ ์ฐจ์ด์ ์„ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ๋ณด์ž. ๋งŒ์ผ ์ด๋Ÿฌ๋‹ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•œ๋‹ค๋ฉด ๊ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์€ ์•„๋ž˜ ์š”์†Œ๋“ค์„ ๊ณ ๋ คํ•  ๊ฒƒ์ด๋‹ค.

 

์ ˆ์ฐจ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ด๋Ÿฌ๋‹ ์‹œ์Šคํ…œ์€ ์–ด๋–ค ๋™์ž‘๋“ค์„ ํ•ด์•ผ ํ• ๊นŒ? ์ด๋Ÿฌ๋‹ ์‹œ์Šคํ…œ์˜ ์ฃผ์š” ์š”์†Œ๋“ค์€ ๋ฌด์—‡์ผ๊นŒ?
ex) ๊ฐ•์˜ ๋“ฃ๊ธฐ, ์งˆ๋ฌธ, ๊ฐ•์˜ ๊ตฌ๋งค ๊ธฐ๋Šฅ ex) ๊ฐ•์‚ฌ ๊ฐ์ฒด, ์ˆ˜๊ฐ•์ƒ ๊ฐ์ฒด, ๊ด€๋ฆฌ์ž ๊ฐ์ฒด
๊ฐ•์˜ ์ˆ˜๊ฐ• ๊ธฐ๋Šฅ ํ•จ์ˆ˜ ๊ตฌํ˜„, ๊ฐ•์˜ ๊ตฌ๋งค ๊ธฐ๋Šฅ ํ•จ์ˆ˜ ๊ตฌํ˜„ ... ๊ฐ•์‚ฌ,์ˆ˜๊ฐ•์ƒ ๊ฐ์ฒด๋Š” ์–ด๋–ค ์†์„ฑ์„ ๊ฐ–๊ณ  ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š”๊ฐ€?

๊ฐ•์‚ฌ, ์ˆ˜๊ฐ•์ƒ ๊ฐ์ฒด๋Š” ์–ด๋–ค ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ ํ˜‘๋ ฅํ•˜๋Š”๊ฐ€?

 

์š”์ฆ˜์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ์ ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ๊ฒƒ์„ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ฌถ์–ด ๋ชจ๋“ˆํ™”
    → ํ•˜๋“œ์›จ์–ด๊ฐ€ ๊ฐ™์€ ๊ธฐ๋Šฅ ์ค‘๋ณต์œผ๋กœ ์—ฐ์‚ฐํ•˜๋Š” ๊ฒƒ ๋ฐฉ์ง€
    → ๋ชจ๋“ˆ์„ ์žฌํ™œ์šฉ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋“œ์›จ์–ด์˜ ๋ถ€๋‹ด ๊ฐ์†Œ
  • SW ๊ตฌ์„ฑ ์š”์†Œ๊ฐ„์˜ ๋” ๋ช…ํ™•ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ฐ€๋Šฅ
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ SW๋ฅผ ๋” ์‰ฝ๊ฒŒ ์œ ์ง€๋ณด์ˆ˜ ํ•  ์ˆ˜ ์žˆ์Œ

 

Java์˜ ํด๋ž˜์Šค

์ด์ œ Java์˜ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. ์•ž์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ “๋‹ค์ˆ˜์˜ ๊ฐ์ฒด๊ฐ€ ๊ฐ์ž์˜ ์—ญํ• ์„ ํ•˜๊ณ , ๊ฐ์ฒด ๊ฐ„์—๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค๋ผ๊ณ  ์„ค๋ช…ํ–ˆ์—ˆ๋‹ค. ์ด๋•Œ์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ํ‹€์ด ๋ฐ”๋กœ ํด๋ž˜์Šค์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค๋Š” ์ฟ ํ‚ค ํ‹€, ๊ฐ์ฒด๋Š” ์ฟ ํ‚ค์— ๋น„์œ ํ•˜์—ฌ ๋งŽ์ด ์„ค๋ช…ํ•œ๋‹ค.

 

๊ฐ์ฒด๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ๊ฒผ๋‹ค.

ํด๋ž˜์Šค์˜ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ณ , ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ํด๋ž˜์Šค๋ช… ๋ณ€์ˆ˜๋ช… = new ํด๋ž˜์Šค๋ช…();์™€ ๊ฐ™์ด ์ƒ์„ฑํ•œ๋‹ค. ์œ„์˜ Car ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์„ฑ ํ•  ๊ฒƒ์ด๋‹ค. ๋˜ ๊ฐ ๋ฐ์ดํ„ฐ์™€ ๋ฉ”์†Œ๋“œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ ‘๊ทผํ•œ๋‹ค.

//Car ๊ฐ์ฒด ์ƒ์„ฑ
Car car1=new Car();

//car1์˜ color์†์„ฑ์„ red๋กœ ์„ค์ •.
car1.color=red;

//car1์˜ speedUp๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
car1.speedUp();

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์ž์„ธํžˆ ๋ณด๋„๋ก ํ•˜์ž. ์œ„์—์„œ car1์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ฉด new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด Car๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ ์ •๋ณด๋ฅผ car1์— ๋‹ด๋Š” ๊ฒƒ์ด๋‹ค. ์œ„ ์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋  ๊ฒƒ์ด๋‹ค.

car1.color=red; ๊ณผ ๊ฐ™์ด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Java์—๋Š” ์ƒ์„ฑ์ž ๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•œ๋‹ค. ์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ํ˜ธ์ถœ๋˜๋Š” ํŠน๋ณ„ํ•œ ํ˜•ํƒœ์˜ ๋ฉ”์†Œ๋“œ์ด๋‹ค. ์ฃผ๋กœ ๊ฐ์ฒด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

๐Ÿ’ก ์ฐธ๊ณ  : ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์•„๋ž˜ ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค.

์ˆซ์žํ˜• ๋ณ€์ˆ˜ : 0
boolean ๋ณ€์ˆ˜ : false
์ฐธ์กฐ ๋ณ€์ˆ˜ : null

 

์ƒ์„ฑ์ž(Constructor)์˜ ํŠน์ง•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ์ƒ์„ฑ์ž์˜ ์ด๋ฆ„์€ ํด๋ž˜์Šค์˜ ์ด๋ฆ„๊ณผ ๋™์ผ
  • ์ ‘๊ทผ ์ œ์–ด์ž๋Š” ๋ณดํ†ต public์‚ฌ์šฉ
  • 0๊ฐœ ๋˜๋Š” 1๊ฐœ ์ด์ƒ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ ์–ธ ๊ฐ€๋Šฅ
  • ๋ฆฌํ„ด ํƒ€์ž…์€ ์ƒ๋žต๋จ
  • ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ Default ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค. →1๊ฐœ ์ด์ƒ์˜ ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ƒ์„ฑ์ž ๊ตฌํ˜„ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

public class Car {
    String color;
    int price;
    String brand;

    //์ƒ์„ฑ์ž
    public Car(String c,int p, String b){
        this.color=c;
        this.price=p;
        this.brand=b;
    }
}

์ดํ›„ Car ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

//์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „ : ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์ œ๊ณต๋จ
Car car1=new Car();

System.out.println(car1.price) //๊ธฐ๋ณธ๊ฐ’์ธ 0 ์ถœ๋ ฅ๋จ

//์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“  ํ›„
Car car1=new Car("red",10,"brand_A");

System.out.println(car1.price) //์ƒ์„ฑ์ž์— ์˜ํ•ด car1์˜ price๋Š” 10์œผ๋กœ ์ดˆ๊ธฐํ™” ๋์œผ๋‹ˆ 10 ์ถœ๋ ฅ

 

 

์บก์Šํ™”(Encapsulation)

์บก์Šํ™”๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ค‘์š”ํ•œ ํŠน์ง• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์•„๋ž˜ 2๊ฐ€์ง€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค.

์บก์Šํ™” (Encapsulation)์˜ 2๊ฐ€์ง€ ์˜๋ฏธ

  • ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๊ทธ๋ฃนํ™”
  • ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์€๋‹‰ →๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์†์„ฑ ๋ฐ ๋ฉ”์†Œ๋“œ๋งŒ ์™ธ๋ถ€์— ๋…ธ์ถœ →๋Œ€๋ถ€๋ถ„์˜ ์†์„ฑ ๋ฐ ๋ฉ”์†Œ๋“œ๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰์Œ

 

๋‘ ๋ฒˆ์งธ ํŠน์ง•์„ ๋ณด๋ฉด ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ์€๋‹‰ํ•œ๋‹ค๊ณ  ๋˜์–ด์žˆ๋‹ค. ์ด๋Š” ์ ‘๊ทผ ์ œ์–ด์ž(Access Modifier)๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ์„ ์ œ์–ดํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. Java์—๋Š” 4๊ฐ€์ง€ ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ ์žˆ๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด public๋Š” ๊ฐ์ฒด.~~ํ•ด์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ  private๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

์ƒ์†(inheritance)

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

์ƒ์†์„ ์ด์šฉํ•˜๋ฉด ํด๋ž˜์Šค๊ฐ„์˜ ๊ณ„์ธต์  ๋ถ„๋ฅ˜(hierarchical classificaions)๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

๋ฌธ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ด๋•Œ ์ƒ์†๋ฐ›์€ ๋ฉค๋ฒ„๋Š” ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ณ„๋„๋กœ ์„ ์–ธํ•˜์ง€ ์•Š๋Š”๋‹ค.

class ์ž์‹ํด๋ž˜์Šค๋ช… extends ๋ถ€๋ชจํด๋ž˜์Šค๋ช…{...}

//ex)
class PaidUser extends User{
		String membership;
}

์ƒ์†์˜ ํŠน์ง•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ํด๋ž˜์Šค ๊ฐ„์˜ ๊ณ„์ธต์  ๋ถ„๋ฃŒ(hierarchical classifications)๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง
  • ์ƒ์†๋ฐ›์€ ๋ฉค๋ฒ„๋Š” ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ณ„๋„๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์Œ
  • ์ƒ์†๋ฐ›์€ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ์ฝ”๋“œ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€
  • ํด๋ž˜์Šค ๊ฐ„์˜ ๊ณ„์ธต ๊ตฌ์กฐ์— ๋”ฐ๋ฅธ ๋‹คํ˜•์„ฑ(polymorphism)์ ์šฉ ๊ฐ€๋Šฅ

์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€ ์ž๋ฐ”๋Š” ๋‹ค์ค‘ ์ƒ์†์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค. ์ฆ‰ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ๋งŒ ์ƒ์†์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์•ž์„œ ์ ‘๊ทผ ์ œ์–ด์ž 4๊ฐœ๋ฅผ ์†Œ๊ฐœํ–ˆ์—ˆ๋‹ค.

private์˜ ๊ฒฝ์šฐ์—๋Š” ์ž์‹ ํด๋ž˜์Šค์—์„œ๋„ ์ ‘๊ทผ์ด ์ œํ•œ๋œ๋‹ค. ์ฆ‰ ์ž์‹ ํด๋ž˜์Šค์—์„œ์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” private๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ž์‹ ํด๋ž˜์Šค์—์„œ์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” protected๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

 

 

 

๐Ÿ“Œ์ฝ”๋“œํ”„๋ ˆ์†Œ Java ์›น ๊ฐœ๋ฐœ ์ฒดํ—˜๋‹จ ํ™œ๋™์œผ๋กœ ์ œ๊ณต๋ฐ›์€ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ์ฝ”๋“œํ”„๋ ˆ์†Œ์—์„œ "Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๊ธ‰" ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ์ฝ”๋“œํ”„๋ ˆ์†Œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๋งํฌ : https://www.codepresso.kr/ 

๋Œ“๊ธ€