ê°ì²´ ì§í¥ íë¡ê·¸ëë°ìì ê°ì¥ ì¤ìí ì리 ì¤ íëë 'ë´ë¶ ì¸í°íì´ì¤ì ì¸ë¶ ì¸í°íì´ì¤ë¥¼ êµ¬ë¶ ì§ë ê²âì ëë¤.
ë¨ìí 'hello worldâ를 ì¶ë ¥íë ê²ì´ ìë ë³µì¡í ì í리ì¼ì´ì ì 구ííë ¤ë©´, ë´ë¶ ì¸í°íì´ì¤ì ì¸ë¶ ì¸í°íì´ì¤ë¥¼ 구ë¶íë ë°©ë²ì âë°ëìâ ìê³ ê³ì ì¼ í©ëë¤.
ì ì ê°ë°ì ë²ì´ë íì¤ ì¸ê³ë¡ ëì ëë ¤, ë´ë¶ ì¸í°íì´ì¤ì ì¸ë¶ ì¸í°íì´ì¤ 구ë¶ì´ 무ìì ì미íëì§ ììë´ ìë¤.
ì¼ììíìì ì íê² ëë 기ê³ë¤ì 꽤 ë³µì¡í êµ¬ì¡°ë¡ ëì´ ììµëë¤. íì§ë§ ë´ë¶ì¸í°íì´ì¤ì ì¸ë¶ ì¸í°íì´ì¤ê° 구ë¶ëì´ì기 ë문ì 문ì ìì´ ê¸°ê³ë¥¼ ì¬ì©í ì ììµëë¤.
ì¤ìí ìì
ì»¤í¼ ë¨¸ì ì ìë¡ ë¤ì´ë´ ìë¤. ì¸íì ì¬íí©ëë¤. ë²í¼ íë, íë©´ íë, êµ¬ë© ëª ê° ë±ì´ ìì£ . íë¥í 커í¼ê° ê²°ê³¼ë¬¼ë¡ ëì¨ë¤ë ê² ëí ë¹¼ëì ì ìê² ë¤ì! :)
íì§ë§ ë´ë¶ë ì´ë ê² ìê²¼ìµëë¤(ìë¦¬ì© ë§¤ë´ì¼ìì ê°ì ¸ì¨ ì¬ì§).
ëê° ëí ì¼í ê²ë¤ì´ ì주 ë§ë¤ì. íì§ë§ ì´ ëª¨ë ê²ì ìì§ ëª»í´ë ì»¤í¼ ë¨¸ì ì ì¬ì©íë ë° ì§ì¥ì´ ììµëë¤.
ì»¤í¼ ë¨¸ì ì 꽤 믿ìì§í 기ê³ì ëë¤. ìë ê° ì¬ì©í ì ìê³ , ì¤ê°ì ê³ ì¥ì´ ëë ì리를 ë°ì¼ë©´ ë©ëë¤.
ì¸íì ë¨ìíì§ë§ ì»¤í¼ ë¨¸ì ì ì 뢰í ì ìë ì´ì ë 모ë ì¸ë¶ ììë¤ì´ ê¸°ê³ ë´ë¶ì ì ì 리ëì´ ì¨ê²¨ì ¸ ì기 ë문ì ëë¤.
ì»¤í¼ ë¨¸ì ìì ë³´í¸ ì»¤ë²ë¥¼ ì ê±°íë©´ ì¬ì©ë²ì´ í¨ì¬ ë³µì¡í´ì§ê³ ìíí ìí©ì´ ì길 ì ììµëë¤. ì´ë를 ëë¬ì¼ í ì§ ëª¨ë¥´ê³ ê°ì ì´ ë ìë ì기 ë문ì ëë¤.
ìì¼ë¡ íìµíê² ì§ë§, íë¡ê·¸ëë°ìì ê°ì²´ë ì»¤í¼ ë¨¸ì ê³¼ ê°ìµëë¤.
íë¡ê·¸ëë°ììë ë³´í¸ ì»¤ë²ë¥¼ ì¬ì©íë ëì í¹ë³í 문ë²ê³¼ 컨벤ì ì ì¬ì©í´ ì쪽 ì¸ë¶ ì¬íì ì¨ê¸´ë¤ë ì ì´ ë¤ë¦ ëë¤.
ë´ë¶ ì¸í°íì´ì¤ì ì¸ë¶ ì¸í°íì´ì¤
ê°ì²´ ì§í¥ íë¡ê·¸ëë°ìì íë¡í¼í°ì ë©ìëë ë 그룹ì¼ë¡ ë¶ë¥ë©ëë¤.
- ë´ë¶ ì¸í°íì´ì¤(internal interface) â ëì¼í í´ëì¤ ë´ì ë¤ë¥¸ ë©ìëìì ì ê·¼í ì ìì§ë§, í´ëì¤ ë°ìì ì ê·¼í ì ìë íë¡í¼í°ì ë©ìë
- ì¸ë¶ ì¸í°íì´ì¤(external interface) â í´ëì¤ ë°ììë ì ê·¼ ê°ë¥í íë¡í¼í°ì ë©ìë
ì»¤í¼ ë¨¸ì ì¼ë¡ ë¹ì íìë©´ ê¸°ê³ ì쪽ì ì¨ì´ìë ë¨ê±°ì´ ë¬¼ì´ ì§ëê°ë ê´ì´ë ë°ì´ ì¥ì¹ ë±ì´ ë´ë¶ ì¸í°íì´ì¤ê° ë ì ììµëë¤.
ë´ë¶ ì¸í°íì´ì¤ì ì¸ë¶ì¬íë¤ì ìë¡ì ì 보를 ì´ì©íì¬ ê°ì²´ë¥¼ ëììíµëë¤. ë°ì´ ì¥ì¹ì ë¶ì°©ë ê´ì íµí´ ë¨ê±°ì´ ë¬¼ì´ ì´ëíë ê²ì²ë¼ ë§ì´ì£ .
ê·¸ë°ë° ì»¤í¼ ë¨¸ì ì ë³´í¸ ì»¤ë²ì ëë¬ì¸ì¬ ì기 ë문ì ë³´í¸ ì»¤ë²ë¥¼ ë²ê¸°ì§ ìê³ ë 커í¼ë¨¸ì ì¸ë¶ìì ë´ë¶ë¡ ì ê·¼í ì ììµëë¤. ë°ìì ì¸ë¶ ìì를 ì ì ìê³ , ì ê·¼ë ë¶ê°ë¥í©ëë¤. ë´ë¶ ì¸í°íì´ì¤ì 기ë¥ì ì¸ë¶ ì¸í°íì´ì¤ë¥¼ íµí´ì¼ë§ ì¬ì©í ì ììµëë¤.
ì´ë° í¹ì§ ë문ì ì¸ë¶ ì¸í°íì´ì¤ë§ ììë ê°ì²´ë¥¼ ê°ì§ê³ 무ì¸ê°ë¥¼ í ì ììµëë¤. ê°ì²´ ìì´ ì´ë»ê² ëìíëì§ ìì§ ëª»í´ë ê´ì°®ë¤ë ì ì í° ì¥ì ì¼ë¡ ìì©í©ëë¤.
ì§ê¸ê¹ì§ ë´ë¶ ì¸í°íì´ì¤ì ì¸ë¶ ì¸í°íì´ì¤ì ê°ê´ì ëí´ ì¤ëª í´ ëë ¸ìµëë¤.
ìë°ì¤í¬ë¦½í¸ìë ìëì ê°ì ë ê°ì§ íì ì ê°ì²´ íë(íë¡í¼í°ì ë©ìë)ê° ììµëë¤.
- public: ì´ëìë ì§ ì ê·¼í ì ìì¼ë©° ì¸ë¶ ì¸í°íì´ì¤ë¥¼ 구ì±í©ëë¤. ì§ê¸ê¹ì§ ë¤ë£¬ íë¡í¼í°ì ë©ìëë 모ë publicì ëë¤.
- private: í´ëì¤ ë´ë¶ììë§ ì ê·¼í ì ìì¼ë©° ë´ë¶ ì¸í°íì´ì¤ë¥¼ 구ì±í ë ì°ì ëë¤.
ìë°ì¤í¬ë¦½í¸ ì´ì¸ì ë¤ì ì¸ì´ìì í´ëì¤ ìì ê³¼ ìì í´ëì¤ììë§ ì ê·¼ì íì©íë âprotectedâ íë를 ì§ìí©ëë¤. protected íëë privateê³¼ ë¹ì·íì§ë§, ìì í´ëì¤ììë ì ê·¼ì´ ê°ë¥íë¤ë ì ì´ ë¤ë¦ ëë¤. protected íëë ë´ë¶ ì¸í°íì´ì¤ë¥¼ ë§ë¤ ë ì ì©í©ëë¤. ìì í´ëì¤ì íëì ì ê·¼í´ì¼ íë ê²½ì°ê° ë§ê¸° ë문ì, protected íëë private íëë³´ë¤ ì¡°ê¸ ë ê´ë²ìíê² ì¬ì©ë©ëë¤.
ìë°ì¤í¬ë¦½í¸ë protected íë를 ì§ìíì§ ìì§ë§, protected를 ì¬ì©íë©´ í¸ë¦¬í ì ì´ ë§ê¸° ë문ì ì´ë¥¼ 모방í´ì ì¬ì©íë ê²½ì°ê° ë§ìµëë¤.
ì´ì ì§ê¸ê¹ì§ ë°°ì´ íë¡í¼í° íì ì ì¬ì©í´ 커í¼ë¨¸ì ì ë§ë¤ì´ë³´ê² ìµëë¤. ì¤ì ì»¤í¼ ë¨¸ì ì ì주 ë³µì¡íì§ë§, ì¬ê¸°ì ê°ê²°ì±ì ìí´ ê°ì´ 모ë¸ì ë§ë¤ê² ìµëë¤(ìíë¤ë©´ 구íì ê°ë¥í©ëë¤).
íë¡í¼í° ë³´í¸í기
먼ì , ê°ë¨í ì»¤í¼ ë¨¸ì í´ëì¤ë¥¼ ë§ë¤ì´ë³´ê² ìµëë¤.
class CoffeeMachine {
waterAmount = 0; // 물íµì ì°¨ ìë 물ì ì
constructor(power) {
this.power = power;
alert( `ì ë ¥ëì´ ${power}ì¸ ì»¤í¼ë¨¸ì ì ë§ëëë¤.` );
}
}
// ì»¤í¼ ë¨¸ì ìì±
let coffeeMachine = new CoffeeMachine(100);
// 물 ì¶ê°
coffeeMachine.waterAmount = 200;
íì¬ íë¡í¼í° waterAmountì powerë publicì
ëë¤. ìì½ê² waterAmountì power를 ì½ê³ ìíë ê°ì¼ë¡ ë³ê²½í기 ì¬ì´ ìíì´ì£ .
ì´ì waterAmount를 protectedë¡ ë°ê¿ì waterAmount를 íµì í´ ë³´ê² ìµëë¤. ììë¡ waterAmount를 0 미ë§ì ê°ì¼ë¡ë ì¤ì íì§ ëª»íëë¡ ë§ë¤ì´ ë³¼ ê²ëë¤.
protected íë¡í¼í° ëª
ìì ë°ì¤ _ì´ ë¶ìµëë¤.
ìë°ì¤í¬ë¦½í¸ìì ê°ì í ì¬íì ìëì§ë§, ë°ì¤ì íë¡ê·¸ëë¨¸ë¤ ì¬ì´ìì ì¸ë¶ ì ê·¼ì´ ë¶ê°ë¥í íë¡í¼í°ë ë©ìë를 ëíë¼ ë ìëë¤.
waterAmountì ë°ì¤ì ë¶ì¬ protected íë¡í¼í°ë¡ ë§ë¤ì´ì¤ìë¤.
class CoffeeMachine {
_waterAmount = 0;
set waterAmount(value) {
if (value < 0) throw new Error("물ì ìì ììê° ë ì ììµëë¤.");
this._waterAmount = value;
}
get waterAmount() {
return this._waterAmount;
}
constructor(power) {
this._power = power;
}
}
// ì»¤í¼ ë¨¸ì ìì±
let coffeeMachine = new CoffeeMachine(100);
// 물 ì¶ê°
coffeeMachine.waterAmount = -10; // Error: 물ì ìì ììê° ë ì ììµëë¤.
ì´ì 물ì ìì 0 미ë§ì¼ë¡ ì¤ì íë©´ ì¤í¨í©ëë¤.
ì½ê¸° ì ì© íë¡í¼í°
power íë¡í¼í°ë¥¼ ì½ê¸°ë§ ê°ë¥íëë¡ ë§ë¤ì´ë´
ìë¤. íë¡í¼í°ë¥¼ ìì±í ëë§ ê°ì í ë¹í ì ìê³ , ê·¸ ì´íìë ê°ì ì ë ìì íì§ ë§ìì¼ íë ê²½ì°ê° ì¢
ì¢
ìëë°, ì´ë´ ë ì½ê¸° ì ì© íë¡í¼í°ë¥¼ íì©í ì ììµëë¤.
ì»¤í¼ ë¨¸ì ì ê²½ì°ìë ì ë ¥ì´ ì´ì í´ë¹í©ëë¤.
ì½ê¸° ì ì© íë¡í¼í°ë¥¼ ë§ë¤ë ¤ë©´ setter(ì¤ì ì)ë ë§ë¤ì§ ìê³ getter(íëì)ë§ ë§ë¤ì´ì¼ í©ëë¤.
class CoffeeMachine {
// ...
constructor(power) {
this._power = power;
}
get power() {
return this._power;
}
}
// ì»¤í¼ ë¨¸ì ìì±
let coffeeMachine = new CoffeeMachine(100);
alert(`ì ë ¥ëì´ ${coffeeMachine.power}ì¸ ì»¤í¼ë¨¸ì ì ë§ëëë¤.`); // ì ë ¥ëì´ 100ì¸ ì»¤í¼ë¨¸ì ì ë§ëëë¤.
coffeeMachine.power = 25; // Error (setter ìì)
ìììë get, set 문ë²ì ì¬ì©í´ì getterì setter í¨ì를 ë§ë¤ììµëë¤.
íì§ë§ ëë¶ë¶ì ìëì ê°ì´ get.../set... íìì í¨ìê° ì í¸ë©ëë¤.
class CoffeeMachine {
_waterAmount = 0;
setWaterAmount(value) {
if (value < 0) throw new Error("물ì ìì ììê° ë ì ììµëë¤.");
this._waterAmount = value;
}
getWaterAmount() {
return this._waterAmount;
}
}
new CoffeeMachine().setWaterAmount(100);
ë¤ì 길ì´ë³´ì´ê¸´ íì§ë§, ì´ë ê² í¨ì를 ì ì¸íë©´ ë¤ìì ì¸ì를 ë°ì ì ì기 ë문ì ì¢ ë ì ì°í©ëë¤(ì ìììì ì¸ìê° íëë¿ì´ê¸´ íì§ë§ì).
ë°ë©´ get, set 문ë²ì ì¬ì©íë©´ ì½ëê° ì§§ìì§ë¤ë ì¥ì ì´ ììµëë¤. ì´ë¤ê±¸ ì¬ì©í´ì¼ íë¤ë ê·ì¹ì ìì¼ë¯ë¡ ìíë ë°©ìì ì íí´ì ì¬ì©íì¸ì.
class MegaMachine extends CoffeeMachineë¡ í´ëì¤ë¥¼ ììë°ì¼ë©´, ìë¡ì´ í´ëì¤ì ë©ìëìì this._waterAmountë this._power를 ì¬ì©í´ íë¡í¼í°ì ì ê·¼í ì ììµëë¤.
ì´ë ê² protected íëë ìëìì ë³´ê² ë private íëì ë¬ë¦¬, ìì°ì¤ë¬ì´ ììì´ ê°ë¥í©ëë¤.
private íë¡í¼í°
private íë¡í¼í°ì ë©ìëë ì ì(proposal) 목ë¡ì ë±ì¬ë 문ë²ì¼ë¡, ëª ì¸ìì ë±ì¬ë기 ì§ì ìíì ëë¤.
private íë¡í¼í°ì ë©ìëë #ì¼ë¡ ììí©ëë¤. #ì´ ë¶ì¼ë©´ í´ëì¤ ìììë§ ì ê·¼í ì ììµëë¤.
물 ì©ë íë를 ëíë´ë private íë¡í¼í° #waterLimitê³¼ ë¨ììë 물ì ìì íì¸í´ì£¼ë private ë©ìë #checkWater를 구íí´ë´
ìë¤.
class CoffeeMachine {
#waterLimit = 200;
#checkWater(value) {
if (value < 0) throw new Error("물ì ìì ììê° ë ì ììµëë¤.");
if (value > this.#waterLimit) throw new Error("ë¬¼ì´ ì©ëì ì´ê³¼í©ëë¤.");
}
}
let coffeeMachine = new CoffeeMachine();
// í´ëì¤ ì¸ë¶ìì privateì ì ê·¼í ì ìì
coffeeMachine.#checkWater(); // Error
coffeeMachine.#waterLimit = 1000; // Error
#ì ìë°ì¤í¬ë¦½í¸ìì ì§ìíë 문ë²ì¼ë¡, private íë를 ì미í©ëë¤. private íëë í´ëì¤ ì¸ë¶ë ìì í´ëì¤ìì ì ê·¼í ì ììµëë¤.
private íëë public íëì ìì¶©íì§ ììµëë¤. private íë¡í¼í° #waterAmountì public íë¡í¼í° waterAmount를 ëìì ê°ì§ ì ììµëë¤.
#waterAmountì ì ê·¼ì waterAmount를 ë§ë¤ì´ë´
ìë¤.
class CoffeeMachine {
#waterAmount = 0;
get waterAmount() {
return this.#waterAmount;
}
set waterAmount(value) {
if (value < 0) throw new Error("물ì ìì ììê° ë ì ììµëë¤.");
this.#waterAmount = value;
}
}
let machine = new CoffeeMachine();
machine.waterAmount = 100;
alert(machine.#waterAmount); // Error
protected íëì ë¬ë¦¬, private íëë ì¸ì´ ìì²´ì ìí´ ê°ì ëë¤ë ì ì´ ì¥ì ì ëë¤.
ê·¸ë°ë° CoffeeMachineì ììë°ë í´ëì¤ìì #waterAmountì ì§ì ì ê·¼í ì ììµëë¤. #waterAmountì ì ê·¼íë ¤ë©´ waterAmountì getterì setter를 íµí´ì¼ í©ëë¤.
class MegaCoffeeMachine extends CoffeeMachine {
method() {
alert( this.#waterAmount ); // Error: CoffeeMachineì íµí´ìë§ ì ê·¼í ì ììµëë¤.
}
}
ë¤ìí ìë리ì¤ìì ì´ë° ì ì½ì¬íì ë무 ì격í©ëë¤. CoffeeMachineì ììë°ë í´ëì¤ìì CoffeeMachineì ë´ë¶ì ì ê·¼í´ì¼ íë ì ë¹í ì¬ì ê° ìì ì ì기 ë문ì´ì£ . ì¸ì´ ì°¨ììì protected íë를 ì§ìíì§ ììë ë ì주 ì°ì´ë ì´ì ê° ë°ë¡ ì¬ê¸°ì ììµëë¤.
private íëë í¹ë³í©ëë¤.
ìë¤ìí¼, ë³´íµì this[name]ì ì¬ì©í´ íëì ì ê·¼í ì ììµëë¤.
class User {
...
sayHi() {
let fieldName = "name";
alert(`Hello, ${this[fieldName]}`);
}
}
íì§ë§ private íëë this[name]ì¼ë¡ ì ê·¼í ì ììµëë¤. ì´ë° 문ë²ì ì ì½ì íëì ë³´ìì ê°íí기 ìí´ ë§ë¤ì´ì¡ìµëë¤.
ìì½
ê°ì²´ ì§í¥ íë¡ê·¸ëë°ìì ë´ë¶ ì¸í°íì´ì¤ì ì¸ë¶ ì¸í°íì´ì¤ë¥¼ 구ë¶íë ê²ì [캡ìí(encapsulation)]ë¼ë ì©ì´ë¥¼ ì¬ì©í´ ì¤ëª í©ëë¤.
캡ìíë ì´ì ì ë¤ìê³¼ ê°ìµëë¤.
- ì¬ì©ìê° ìì ì ë°ë±ì ì°ì§ ìëë¡ ë³´í¸
-
ì»¤í¼ ë¨¸ì 를 í¨ê» ì¬ì©íë ê°ë°íì´ ìë¤ê³ ììí´ë´ ìë¤. "Best CoffeeMachine"ì´ë¼ë íì¬ìì ë§ë ì´ ì»¤í¼ ë¨¸ì ì íì¬ ì ìëíê³ ìì§ë§, ë³´í¸ ì»¤ë²ê° ìì´ì ë´ë¶ ì¸í°íì´ì¤ê° ë ¸ì¶ëì´ìë ìí©ì ëë¤.
êµììë íìë¤ì 모ë ì¤ê³ ìëì ë§ê² ì»¤í¼ ë¨¸ì ì ì¬ì©í©ëë¤. ê·¸ë°ë° ì´ë ë Johnì´ë¼ë ê°ë°ìê° ìì ì ë¥ë ¥ì ê³¼ì íë©° ì»¤í¼ ë¨¸ì ë´ë¶ë¥¼ ì´ì§ ë§ì§ê² ë©ëë¤. ì´í í, ì»¤í¼ ë¨¸ì ì ê³ ì¥ì´ ëë²ë ¸ì£ .
ì»¤í¼ ë¨¸ì ì´ ê³ ì¥ ë ê±´ Johnì ì못ì´ë¼ê¸°ë³´ë¤ë, ë³´í¸ ì»¤ë²ë¥¼ ìì ê³ Johnì´ ë§ìëë¡ ì¡°ìíëë¡ ë´ë²ë ¤ ë ì¬ëì ì못ì ëë¤.
íë¡ê·¸ëë°ììë ë§ì°¬ê°ì§ì ëë¤. ì¸ë¶ìì ìëì¹ ìê² í´ëì¤ë¥¼ ì¡°ìíê² ëë©´ ê·¸ ê²°ê³¼ë ì측í ì ìê² ë©ëë¤.
- ì§ì ê°ë¥
-
ì¤ì ê°ë° ê³¼ì ìì ì¼ì´ëë ìí©ì ì»¤í¼ ë¨¸ì ì¬ë¡ë³´ë¤ í¨ì¬ ë³µì¡í©ëë¤. ì»¤í¼ ë¨¸ì ì íë² êµ¬ë§¤íë©´ ëì´ì§ë§ ì¤ì ì½ëë ì ì§ë³´ìê° ëììì´ ì¼ì´ë기 ë문ì ëë¤.
ë´ë¶ ì¸í°íì´ì¤ë¥¼ ì격íê² êµ¬ë¶íë©´, í´ëì¤ ê°ë°ìë¤ì ì¬ì©ììê² ìë¦¬ì§ ìê³ ë ìì ë¡ê² ë´ë¶ íë¡í¼í°ì ë©ìëë¤ì ìì í ì ììµëë¤.
ë´ë¶ ì¸í°íì´ì¤ê° ì격í 구ë¶ë í´ëì¤ë¥¼ ë§ì§ê³ ìë¤ë©´, ê·¸ ì´ë¤ ì¸ë¶ ì½ëë ë´ë¶ private ë©ìëì ìì¡´íê³ ìì§ ì기 ë문ì private ë©ìëì ì´ë¦ì ìì íê² ë°ê¿ ì ìê³ , 매ê°ë³ì를 ë³ê²½íê±°ë ìì¨ ìë ìë¤ë ê²ì ìì ëë©´ ë©ëë¤.
ì¬ì©ì ì ì¥ìì ìë¡ì´ ë²ì ì´ ì¶ìëë©´ì ë´ë¶ ì ë¹ê° ì ë©´ì ì¼ë¡ ì´ë¤ì¡ëë¼ë ì¸ë¶ ì¸í°íì´ì¤ë§ ëê°ë¤ë©´ ì ê·¸ë ì´ëê° ì©ì´íë¤ë ì¥ì ì´ ììµëë¤.
- ë³µì¡ì± ìë
-
ì¬ëë¤ì ê°ë¨í ê²ì ì¢ìí©ëë¤. ë´ë¶ë ê°ë¨ì¹ ìëë¼ë ìµìí ì¸íì ê°ë¨í´ì¼ íì£ .
íë¡ê·¸ë머ë¤ë ìì¸ë ìëëë¤.
구í ì¸ë¶ ì¬íì´ ì¨ê²¨ì ¸ ìì¼ë©´ ê°ë¨íê³ í¸ë¦¬í´ì§ëë¤. ì¸ë¶ ì¸í°íì´ì¤ì ëí ì¤ëª ë 문ìíí기 ì¬ìì§ì£ .
ë´ë¶ ì¸í°íì´ì¤ë¥¼ ì¨ê¸°ë ¤ë©´ protectedë private íë¡í¼í°ë¥¼ ì¬ì©íë©´ ë©ëë¤.
- protected íëë
_ë¡ ììí©ëë¤._ì ìë°ì¤í¬ë¦½í¸ìì ì§ìíë 문ë²ì ìëì§ë§, protected íë를 ëíë¼ ë ê´ìµì²ë¼ ì¬ì©ë©ëë¤. ê°ë°ìë protected íë¡í¼í°ê° ì ìë í´ëì¤ì í´ë¹ í´ëì¤ë¥¼ ììë°ë í´ëì¤ììë§_ê° ë¶ì íëì ì ê·¼í´ì¼ í©ëë¤. - private íëë
#ë¡ ììíë©°, ìë°ì¤í¬ë¦½í¸ìì ì§ìíë 문ë²ì ëë¤.#ë¡ ììíë íëë í´ë¹ íëê° ì ìë í´ëì¤ ë´ë¶ììë§ ì ê·¼ ê°ë¥í©ëë¤.
모ë ë¸ë¼ì°ì ìì private íë를 ì§ìíì§ ìì§ë§ í´ë¦¬íì 구ííì¬ ì¬ì©í ì ììµëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.