• ์บก์Šํ™”

    2022. 5. 17.

    by. JuneBee

    728x90
    ๋ฐ˜์‘ํ˜•

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

    <1>์ œํ•œ์ž

    1. ์ œํ•œ์ž (modifier) ํด๋ž˜์Šค, ๋ณ€์ˆ˜, ๋ฉ”์„œ๋“œ ์„ ์–ธ๋ถ€์™€ ํ•จ๊ผ ์‚ฌ์šฉ๋˜์–ด ๋ถ€๊ฐ€์ ์ธ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌ
      • ์ ‘๊ทผ ์ œํ•œ์ž : private, default(package), protected, public
      • static : ํด๋ž˜์Šค ๋ ˆ๋ฒจ์˜ ์š”์†Œ ์„ค์ •
      • final : ์š”์†Œ๋ฅผ ๋”์ด์ƒ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ฒŒ ํ•จ
      • abstract: ์ถ”์ƒ ๋ฉ”์„œ๋“œ ๋ฐ ์ถ”์ƒ ํด๋ž˜์Šค ์ž‘์„ฑ
      • synchronized: ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์—์„œ์˜ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ
    2. ์ ‘๊ทผ ์ œํ•œ์ž

    public class Parent{
    public int publicVar;protected int protectedVar;int defaultVar;private int privVar;
    public void useMember(){
    this.publicVar=10; this.protectedVa= 10;this.defaultVar=10;this.privVar 10;}
    }
    public class Child extends Parent{
    public void useMember(){
    this.publicVar = 10;
    this.protectVar =10;
    this.defaultVar=10; //๊ฐ€๋Šฅ
    this.privVar =10 ;
    this.some = 10; //๋ถˆ๊ฐ€๋Šฅ
    }
    }
    public class Friend {
    public void method(){
    p.publicVar=1;
    p.protectVar=1;
    p.defaultVar =1; //๊ฐ€๋Šฅ
    p.privVar=1; //not visible
    }
    }

    ๐Ÿงธ ํ•˜๋‚˜์˜ ๋Œ€์ƒ์— ์—ฌ๋Ÿฌ ์ œํ•œ์ž๋ฅผ ์กฐํ•ฉ ๊ฐ€๋Šฅํ•˜๋‚˜, ์ ‘๊ทผ ์ œํ•œ์ž๋Š” ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค โ†’ Eclipse ๋ฅผ ์—ด์–ด๋ณด๋ฉด, class ์ƒ์„ฑ ์‹œ modifiers๋ž€์„ ๋ณด๋ฉด ์ ‘๊ทผ์ œํ•œ์ž๋Š” radio button์œผ๋กœ ํ•˜๋‚˜๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, abstract๋‚˜ final ์€ ์ค‘๋ณต ์„ ํƒ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ๐Ÿงธ ์ˆœ์„œ๋Š” ๋ฌด๊ด€ํ•˜๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ๋งจ ์•ž์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค

    ๐Ÿงธ final ์šฉ๋„ :

    • final class: ๋”์ด์ƒ ํ™•์žฅ ํ•  ์ˆ˜ ์—†์Œ - ์ƒ์† ๊ธˆ์ง€ โ†’ ์˜ค๋ฒ„๋ผ์ด๋“œ๋ฅผ ๋ฐฉ์ง€ (์ด๋ฏธ ์™„๋ฒฝ^^)
    • final method: ๋”์ด์ƒ ์žฌ์ •์˜ ๋ถˆ๊ฐ€ โ†’ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๊ธˆ์ง€
    • final variable: ๋”์ด์ƒ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Œ โ†’ ์ƒ์ˆ˜ํ™”

    <2>์บก์Šํ™”

    ๐Ÿคฆ๐Ÿปโ€โ™€๏ธ Eclipse > Source ๋“ค์–ด๊ฐ€๋ฉด constructors, getters and setters ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค !

    ๋ฐ์ดํ„ฐ ์€๋‹‰๊ณผ ๋ณดํ˜ธ

    ์™ธ๋ถ€์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ์ ‘๊ทผํ•œ๋‹ค๋ฉด ์†Œ์ค‘ํ•œ ์ •๋ณด๊ฐ€ ๋ณดํ˜ธ๋˜์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ณ€์ˆ˜๋ฅผ private ์ ‘๊ทผ์œผ๋กœ ๋ง‰๊ณ  ๊ณต๊ฐœ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ํ†ต๋กœ๋ฅผ ๋”ฐ๋กœ ๋งˆ๋ จํ•ด์ค€๋‹ค (Setters & Getters)

    <3>์‹ฑ๊ธ€ํ„ด ๋””์ž์ธ ํŒจํ„ด

    1. ๊ฐ์ฒด์˜ ์ƒ์„ฑ์„ ์ œํ•œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
      • ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ํ•„์š” ์—†๋Š” ๊ฒฝ์šฐ: ์ˆ˜์ •๊ฐ€๋Šฅํ•œ ๋งด๋ฒ„๋ณ€์ˆ˜๊ฐ€ ์—†๊ณ  ๊ธฐ๋Šฅ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ (stateless)
      • ๊ฐ์ฒด๋ฅผ ๊ณ„์† ์ƒ์„ฑ/ ์‚ญ์ œํ•˜๋Š”๋ฐ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค์–ด์„œ ์žฌ์‚ฌ์šฉ์ด ์œ ๋ฆฌํ•  ๊ฒฝ์šฐ
    2. ์‹ฑ๊ธ€ํ„ด ๋””์ž์ธ ํŒจํ„ด
      1. ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ private์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ์ž์— ์ ‘๊ทผ ๊ธˆ์ง€
      2. ๋‚ด๋ถ€์—์„œ๋Š” private์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ง์ ‘ ๊ฐ์ฒด ์ƒ์„ฑ โ†’ ๋งด๋ฒ„ ๋ณ€์ˆ˜์ด๋ฏ€๋กœ private
      3. Getter ์ƒ์„ฑ : ์™ธ๋ถ€์—์„œ private member์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ(setter๋Š” ํ•„์š”x)
      4. Getter ์™€ ๋ณ€์ˆ˜์— static์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ฐ์ฒด ์—†์ด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

    ๐Ÿงธ ์™ธ๋ถ€์—์„  getter ์„ ํ†ตํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋งŒ ์žฌ์‚ฌ์šฉํ• ์ˆ˜์žˆ๋‹ค

     

    728x90
    ๋ฐ˜์‘ํ˜•

    '๐Ÿ““ STUDY > JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    List  (0) 2022.05.18
    QUEUE  (0) 2022.05.18
    ๋‹คํ˜•์„ฑ  (0) 2022.05.17
    ์ƒ์†  (0) 2022.05.17
    ์ถ”์ƒํ™”  (0) 2022.05.17

    ๋Œ“๊ธ€