๐ŸŒˆ [Section1] 13. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ3

ํ˜„์ฃผยท2022๋…„ 9์›” 6์ผ
0

bootcamp

๋ชฉ๋ก ๋ณด๊ธฐ
13/71

๐Ÿ“• ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ!

  • ๊ฐ์ฒด ์ง€ํ–ฅ์˜ 4๊ฐ€์ง€ ์›๋ฆฌ ์ค‘ ์ƒ์† / ์บก์Šํ™”

โœ๏ธ ๊ฐ์ฒด ์ง€ํ–ฅ์˜ 4๊ฐ€์ง€ ์›๋ฆฌ

  1. ์ƒ์†
  2. ์บก์Šํ™”
  3. ๋‹คํ˜•์„ฑ
  4. ์ถ”์ƒํ™”

โœ๏ธ ์ƒ์†

  • ์ƒ์œ„ ํด๋ž˜์Šค์™€ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ ๋‚˜๋ˆ„์–ด ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„(ํ•„๋“œ, ๋ฉ”์„œ๋“œ, ์ด๋„ˆํด๋ž˜์Šค)๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค์™€ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ ( 'ํ™•์žฅ๋˜์—ˆ๋‹ค' )
    ( ์ด ๋•Œ, ํ•˜์œ„ ํด๋ž˜์Šค ๋ฉค๋ฒ„์˜ ๊ฐœ์ˆ˜ -> ์ž์‹ ์˜ ๋ฉค๋ฒ„ + ์ƒ์†๋œ ๋ฉค๋ฒ„ )

  • ๋‹ค์ค‘ ์ƒ์„ฑ ๋ถˆ๊ฐ€ ( ์ƒ์œ„ ํด๋ž˜์Šค๋Š” ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜)

  • java์˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—์„œ๋Š” ๋‹จ์ผ ์ƒ์†(single ingeritance)๋งŒ ํ—ˆ์šฉ

class ํ•˜์œ„ ํด๋ž˜์Šค๋ช… extends ์ƒ์œ„ ํด๋ž˜์Šค๋ช… {
}

[ ์ƒ์†์˜ ๋ชฉ์  ]

๐Ÿ‘‰ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์ ์€ ์–‘์˜ ์ฝ”๋“œ๋กœ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐ ๊ฐ€๋Šฅ ( ๋‹คํ˜•์  ํ‘œํ˜„์ด ๊ฐ€๋Šฅ )

โœ๏ธ ํฌํ•จ(composite)

  • ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ

โœ”๏ธ ์ƒ์†๊ณผ ํฌํ•จ์˜ ์ฐจ์ด

[ ์ƒ์† ]

  • ํ•˜๋‚˜์˜ ํฐ ๋ฒ”์œ„์˜ ์ƒ์œ„ ํด๋ž˜์Šค ์•ˆ์— ๊ฐ๊ฐ์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ํŠธ๋ฆฌ๊ตฌ์กฐ์ฒ˜๋Ÿผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ
    ( ~~๋Š” ~~์ด๋‹ค IS-A)
    Ex. ํ•™์ƒ์€ ์‚ฌ๋žŒ์ด๋‹ค ( ์ƒ์œ„ํด๋ž˜์Šค - ์‚ฌ๋žŒ / ํ•˜์œ„ํด๋ž˜์Šค - ํ•™์ƒ )

[ ํฌํ•จ ]

  • ๋” ํฐ ๋ฒ”์œ„์˜ ํด๋ž˜์Šค๊ฐ€ ์ž‘์€ ๋ฒ”์œ„์˜ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ
    ( ~~๋Š” ~~์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค HAS-A)
    Ex. ์ง์›์€ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค ( ์ƒ์œ„ํด๋ž˜์Šค - ์ง์› / ํ•˜์œ„ํด๋ž˜์Šค - ์ฃผ์†Œ )

โœ” ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Method Overriding)

  • ์ƒ์œ„ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†์„ ๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค ์•ˆ์—์„œ, ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์™€ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋‹ค๋ฅด๊ฒŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ ( ๋ฎ์–ด์“ฐ๊ธฐ )

  • ๊ธฐ๋Šฅ(์‹œ๊ทธ๋‹ˆ์ฒ˜)์€ ๊ฐ™์€๋ฐ ์žฌ์ •์˜ ํ•ด์„œ ์‹คํ–‰๋˜๋Š” ๊ฐ’(๋ฐ”๋””)์ด ๋‹ค๋ฅธ ๊ฒƒ!

์กฐ๊ฑด (1) ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ๋ถ€(๋ฉ”์„œ๋“œ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฐ˜ํ™˜ํƒ€์ž…)๊ฐ€ ์ƒ์œ„ํด๋ž˜์Šค์˜ ์„ ์–ธ๋ถ€์™€ ์™„์ „ํžˆ ์ผ์น˜ํ•ด์•ผํ•จ
์กฐ๊ฑด (2) ์ ‘๊ทผ ์ œ์–ด์ž์˜ ์ ‘๊ทผ ๋ฒ”์œ„๊ฐ€ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ๋„“์–ด์•ผ ํ•จ
์กฐ๊ฑด (3) ์˜ˆ์™ธ๋Š” ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ณด๋‹ค ๋งŽ์ด ์„ ์–ธํ•  ์ˆ˜ ์—†์Œ

โš ๏ธ ์˜ค๋ฒ„๋กœ๋”ฉ โš ๏ธ
๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ
( ์žฌ์ •์˜ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ์— ์ดˆ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” ๊ทธ๋Œ€๋กœ ์žˆ๊ณ  ๋งŒ๋“œ๋Š” ๋Œ€๋กœ ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ๊น€ )
โ— ๋‘ ๊ฐœ ํ—ท๊ฐˆ๋ฆฌ์ง€ ๋ง๊ธฐ !

โœ๏ธ super ์™€ super()

  • ์ƒ์†ํ•œ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜๋ช…๊ณผ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜๋ช…์ด ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๋ถ„์„ ์œ„ํ•ด ์‚ฌ์šฉ

    [ super ]

    • ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ํ˜ธ์ถœ

    [ super() ]

    • ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœ
    • this()์™€ ํŠน์ง• ๊ฐ™์•„, ์ƒ์„ฑ์ž ์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ , ๋ฐ˜๋“œ์‹œ ์ฒซ ์ค„์— ์™€์•ผํ•จ

โœ” Object ํด๋ž˜์Šค

  • ์ž๋ฐ”์˜ ํด๋ž˜์Šค ์ƒ์†๊ณ„์ธต๋„์—์„œ ์ตœ์ƒ์œ„์— ์œ„์น˜ํ•œ ์ƒ์œ„ํด๋ž˜์Šค
  • ์ž๋ฐ”์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ํ™•์žฅ
    ๐Ÿ‘‰ ์•„๋ฌด๋Ÿฐ ์ƒ์†์„ ๋ฐ›์ง€ ์•Š๋Š” ํด๋ž˜์Šค์— ์ž๋™์œผ๋กœ extends Object๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋„๋กํ•จ

โœ๏ธ ์บก์Šํ™”

  • ํŠน์ • ๊ฐ์ฒด ์•ˆ์— ๊ด€๋ จ๋œ ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜์˜ ์บก์Š(capsule)๋กœ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ
  • ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์ด ํ•จ๋ถ€๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋…๋ฆฝ์„ฑ์„ ํ™•๋ณด ๊ฐ€๋Šฅ
  • ์œ ์ง€๋ณด์ˆ˜์™€ ์ฝ”๋“œ ํ™•์žฅ ์‹œ์—๋„ ์˜ค๋ฅ˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™” -> ํšจ๊ณผ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ์— ์šฉ์ด
  • ๋ชฉ์  (1) ์ •๋ณด๋ฅผ ์€๋‹‰(data hiding)
  • ๋ชฉ์  (2) ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ(data protection)
    ๐Ÿ‘‰ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ถˆํ•„์š”ํ•œ ์™ธ๋ถ€ ๋…ธ์ถœ ๋ฐฉ์ง€

โœ” ํŒจํ‚ค์ง€(package)

  • ํŠน์ •ํ•œ ๋ชฉ์ ์„ ๊ณต์œ ํ•˜๋Š” ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ทธ๋ฃน๋‹จ์œ„๋กœ ๋ฌถ์–ด ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ

  • ํŒจํ‚ค์ง€ = ๋””๋ ‰ํ† ๋ฆฌ(directory) -> ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€์— ์†ํ•œ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค ํŒŒ์ผ์€ ๋ชจ๋‘ ํ•ด๋‹น ํŒจํ‚ค์ง€์— ์†ํ•ด์žˆ์Œ

  • ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ๊ณ„์ธต ๊ตฌ์กฐ ๊ฐ„ ๊ตฌ๋ถ„์€ ์ (.)
    Ex. package practice.test;

  • ์†Œ์Šค ์ฝ”๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ๋ฐ˜๋“œ์‹œ package ํŒจํ‚ค์ง€๋ช…์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•จ
    Ex. ๋Œ€ํ‘œ์ ์ธ ํŒจํ‚ค์ง€ -> ์ž๋ฐ”์˜ ๊ธฐ๋ณธ ํด๋ž˜์Šค๋“ค์„ ๋ชจ์•„ ๋†“์€ java.lang / ํ™•์žฅ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด ๋†“์€ java.util / ์ž๋ฐ”์˜ ์ž…์ถœ๋ ฅ๊ณผ ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด๋†“์€ java.io์™€ java.nio ๋“ฑ

  • ํด๋ž˜์Šค์˜ ์ด๋ฆ„์ด ๊ฐ™์•„๋„ ๊ฐ๊ฐ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋‚ด์— ์žˆ๋‹ค๋ฉด ์ถฉ๋Œ ๋ฐœ์ƒ X

โœ” import๋ฌธ

  • ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋‚ด์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

( import๋ฌธ์„ ์“ฐ์ง€ ์•Š์„ ๊ฒฝ์šฐ, practice.test.ExImport ex = new practice.test.ExImport();
์ด๋Ÿฐ ์‹์œผ๋กœ ํŒจํ‚ค์ง€๋ช…์„ ๋ชจ๋‘ ํฌํ•จ์‹œ์ผœ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผํ•จ )

import ํŒจํ‚ค์ง€๋ช….ํด๋ž˜์Šค๋ช…;

์œ„์™€ ๊ฐ™์ด, ํŒจํ‚ค์ง€๋ช…๊ณผ ํŒจํ‚ค์ง€๋ช…์„ ์ƒ๋žตํ•˜๋ ค๊ณ  ํ•˜๋Š” ํด๋ž˜์Šค๋ช…์„ ์ ์–ด์ฃผ๋ฉด ๋จ

 import ํŒจํ‚ค์ง€๋ช….*;

์œ„์™€ ๊ฐ™์ด ํ•˜๋ฉด, ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ํŒจํ‚ค์ง€๋ช… ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

โœ๏ธ ์ œ์–ด์ž(Modifier)

  • ํด๋ž˜์Šค, ํ•„๋“œ, ๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž ๋“ฑ์— ๋ถ€๊ฐ€์ ์ธ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ํ‚ค์›Œ๋“œ (ํ˜•์šฉ์‚ฌ์˜ ์—ญํ• ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ)

  • ๋ณดํ˜ธ์™€ ์€๋‹‰์„ ์œ„ํ•œ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•

  • ํ•˜๋‚˜์˜ ๋Œ€์ƒ์— ์—ฌ๋Ÿฌ ์ œ์–ด์ž ์‚ฌ์šฉ ๊ฐ€๋Šฅ (์ ‘๊ทผ ์ œ์–ด์ž๋Š” ํ•œ๋ฒˆ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

1. ๊ธฐํƒ€ ์ œ์–ด์ž

  • static, final, abstract, native, transient, synchronized ๋“ฑ

2. ์ ‘๊ทผ ์ œ์–ด์ž (Access Modifier)

ํด๋ž˜์Šค ์™ธ๋ถ€๋กœ์˜ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋…ธ์ถœ์„ ๋ฐฉ์ง€(data hiding)ํ•  ์ˆ˜ ์žˆ๊ณ , ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž„์˜๋กœ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ๋ง‰์„ ์ˆ˜ ์žˆ์Œ

๐Ÿ’ก ์ ‘๊ทผ ์ œ์–ด์ž์˜ ์ ‘๊ทผ ๋ฒ”์œ„ (๋ฐ‘์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์ง)
โ €
(1) private - ํด๋ž˜์Šค ๋‚ด O / ํŒจํ‚ค์ง€ ๋‚ด X / ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ ํด๋ž˜์Šค X / ํŒจํ‚ค์ง€ ์™ธ X
โ €
(2) default - ํด๋ž˜์Šค ๋‚ด O / ํŒจํ‚ค์ง€ ๋‚ด O / ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ ํด๋ž˜์Šค X / ํŒจํ‚ค์ง€ ์™ธ X
(๋ณ€์ˆ˜๋ช… ์•ž์— ์•„๋ฌด๋Ÿฐ ์ ‘๊ทผ์ œ์–ด์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ์ž๋™ ์„ค์ •๋˜๋Š” ์ ‘๊ทผ ์ œ์–ด์ž)
โ €
(3) protected - ํด๋ž˜์Šค ๋‚ด O / ํŒจํ‚ค์ง€ ๋‚ด O / ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ ํด๋ž˜์Šค O / ํŒจํ‚ค์ง€ ์™ธ X
โ €
(4) public - ํด๋ž˜์Šค ๋‚ด O / ํŒจํ‚ค์ง€ ๋‚ด O / ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ํ•˜์œ„ ํด๋ž˜์Šค O / ํŒจํ‚ค์ง€ ์™ธ O ( ์ ‘๊ทผ ์ œํ•œ ์—†์Œ (๊ณต์šฉ) )

โœ”๏ธ ์•„๋ž˜์™€ ๊ฐ™์ด 1๋ฒˆ ํŒจํ‚ค์ง€์˜ ํ•œ ํด๋ž˜์Šค ์•ˆ์— ๊ฐ๊ฐ ๋‹ค๋ฅธ ์ ‘๊ทผ ์ œ์–ด์ž๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด

public class Parent { // Parent ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ œ์–ด์ž๋Š” public
    private int a = 1;
    int b = 2; //default ์ ‘๊ทผ ์ œ์–ด์ž
    protected int c = 3;
    public int d = 4;
  • ๋™์ผ ํด๋ž˜์Šค ๋‚ด์˜ ๋ฉ”์„œ๋“œ์—์„œ ๊ฐ๊ฐ์„ ์ถœ๋ ฅํ•œ ๊ฒฝ์šฐ
    -> a,b,c,d ๋ชจ๋‘ ์ถœ๋ ฅ

  • ๊ฐ™์€ ํŒจํ‚ค์ง€์ง€๋งŒ ๋‹ค๋ฅธ ํด๋ž˜์Šค ๋‚ด์˜ ๋ฉ”์„œ๋“œ์—์„œ ๊ฐ๊ฐ์„ ์ถœ๋ ฅํ•œ ๊ฒฝ์šฐ
    -> b,c,d ์ถœ๋ ฅ
    ( ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ private์ธ a๋Š” ๋™์ผ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ )
    โ— but โ— ๋ฉ”์„œ๋“œ ์ž์ฒด๋ฅผ ํ˜ธ์ถœํ•ด์ค€ ๊ฒฝ์šฐ์—๋Š” a,b,c,d ๋ชจ๋‘ ์ถœ๋ ฅ๋จ

  • ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋‚ด์˜ 1๋ฒˆ ํŒจํ‚ค์ง€๋ฅผ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์—์„œ ๊ฐ๊ฐ์„ ์ถœ๋ ฅํ•œ ๊ฒฝ์šฐ
    -> c,d ์ถœ๋ ฅ
    ( ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ private์ธ a๋Š” ๋™์ผ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ )
    ( ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ defualt์ธ b๋Š” ๋™์ผ ํŒจํ‚ค์ง€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ )

  • ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋‚ด์˜ 1๋ฒˆ ํŒจํ‚ค์ง€๋ฅผ ์ƒ์†๋ฐ›์ง€ ์•Š์€ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์—์„œ ๊ฐ๊ฐ์„ ์ถœ๋ ฅํ•œ ๊ฒฝ์šฐ
    -> d ์ถœ๋ ฅ
    ( ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ private์ธ a๋Š” ๋™์ผ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ )
    ( ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ defualt์ธ b๋Š” ๋™์ผ ํŒจํ‚ค์ง€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ )
    ( ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ protected์ธ c๋Š” ํŒจํ‚ค์ง€๋ฅผ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ )

โœ๏ธ getter์™€ setter ๋ฉ”์„œ๋“œ

  • ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ณดํ˜ธํ•˜๋ฉด์„œ๋„ ์˜๋„ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉฐ ์บก์Šํ™” ๊ฐ€๋Šฅ
    ๐Ÿ‘‰ private ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์™ธ๋ถ€์—์„œ ํ•„๋“œ๋กœ ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ  getter / setter ๋ฉ”์„œ๋“œ๋กœ ์ ‘๊ทผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ฒ€์‚ฌ ํ›„ ์œ ํšจํ•  ๋•Œ๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ
  • ๋ณ€์ˆ˜ ์•ž์— get / set ์„ ๋ถ™์—ฌ ์‚ฌ์šฉํ•˜๊ณ , ์ด ๋•Œ ๋’ค์— ์˜ค๋Š” ๋ณ€์ˆ˜์˜ ์•ž๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ

( Alt + Insert ๋‹จ์ถ•ํ‚ค๋กœ ๋ฐ”๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ )

(private ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ ์ •๋ณด๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ์šธํƒ€๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— getter setter ๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋งŒ ์ˆ˜์ • ํ•ด์•ผํ•จ)

[ getter ๋ฉ”์„œ๋“œ ] get + ๋ณ€์ˆ˜๋ช…

  • ์„ค์ •ํ•œ ๋ณ€์ˆ˜ ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ
    ( ์™ธ๋ถ€์—์„œ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ๋„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ’ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก )
  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
    โ €

[ setter ๋ฉ”์„œ๋“œ ] set + ๋ณ€์ˆ˜๋ช…

  • private ์ ‘๊ทผ ์ œ์–ด์ž๋กœ ์„ ์–ธ๋œ ํ•„๋“œ์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•  ๋•Œ ํ•„์š”
  • ์™ธ๋ถ€์—์„œ setter ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜์—ฌ ์กฐ๊ฑด์— ๋งž์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ
  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋Œ€์ž…

๐ŸŒˆ ๋Š๋‚€์ 

์˜ค๋Š˜๋„ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์จ๋ณด๋ฉด์„œ ํ•˜๋‹ˆ ์ดํ•ด๊ฐ€ ๋” ์ž˜ ๋๋‹ค!
ํ•™์Šตํ•˜๋ฉด์„œ ๋‹ค ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€๊ณ  ๊ดœ์ฐฎ์•˜๋Š”๋ฐ getter setter๋งŒ ๋ญ”๊ฐ€ ์‚ด์ง ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€์„œ ์ข€ ๋” ์ฐพ์•„๋ณด์•˜๊ณ  ๊ทธ๋ž˜๋„ ๊ดœ์ฐฎ์•„์กŒ๋‹ค!
๊ฐ์ฒด์ง€ํ–ฅ ์ฒ˜์Œ ํ•™์Šตํ•  ๋•Œ๋ณด๋‹ค ๊ทธ๋ž˜๋„ ๋จธ๋ฆฌ์— ๊ตฌ์กฐ๊ฐ€ ๋งŽ์ด ์žกํ˜€ ์ „๋ณด๋‹ค ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค !

0๊ฐœ์˜ ๋Œ“๊ธ€