[Java] 06. μΊ‘μνμ μ 보 μλ
- -
π μΊ‘μνμ μ 보 μλ
μμ½μ κ° κΈ°λ₯μ νλ μ±λΆλ€μ νλμ μΊ‘μμ λ¬Άμ΄ μ¬μ©μκ° λ¨Ήκ±°λ κ΄λ¦¬νλ κ²μ νΈνκ² ν©λλ€. λν μμ½μ κ·Έ κΈ°λ₯μ μννκΈ° μν μ΅μνμ λΆλΆ μ¦ μΈνλ§ κ³΅κ°νκ³ κ·Έ μΈμ κ²μ μ¨κΉλλ€. μ΄λ₯Ό ν΅ν΄ νμλ€μ μμ½μ μ½κ² μμ·¨νκ³ μ½μΌλ‘μ νΈν μ¬μ©ν μ μλ κ² μ λλ€.
μλ° κ°μ²΄λ λ°μ΄ν°λ₯Ό κ°μ§κ³ μλ "λ©€λ² νλ"μ κ·Έ κΈ°λ₯μ νλ "λ©μλ"λ‘ κΈ°λ₯λ€μ΄ λ¬Άμ¬μμ΅λλ€. λλ¬Έμ κ°λ°μλ μ¬μ©μκ° κ°μ²΄λ₯Ό μ μ§ λ° λ³΄μνκΈ° μ’μ΅λλ€. λν κ°μ²΄μ λ©€λ² νλλ λ©μλ μ€ νμν λΆλΆλ§ μ κ·Όνλλ‘ νμ¬ λΆμ μ ν μ κ·Όμ λ§μ μ μμ΅λλ€.
π I. μΊ‘μνμ μ 보 μλ
π 1. μΊ‘μν(Encapsulation)
- "λ°μ΄ν°"μ κ΄λ ¨λ "λ©μλ"λ€μ νλμ κ°μ²΄λ‘ λ¬Άλ κ²μ μλ―Έ
- λ΄λΆλ₯Ό 보νΈνμ¬ λ³΄λ€ μ½κ³ μμ ν μ¬μ©μ κ°λ₯νκ² ν¨
- μλ°λ λ¨μ κ°μ²΄λ₯Ό λͺ¨μ ν° ν΄λμ€λ‘ λ§λ€ μ μκΈ° λλ¬Έμ λ°λμ νλμ ν΄λμ€λ‘ λ§λ€μ΄μΌνλ κ²μ μλ
- μΊ‘μνκ° μ λμ΄μλ€λ©΄ νλμ ν΄λμ€κ° λ³κ²½λλλΌλ κ΄λ ¨λ λλ¨Έμ§ ν΄λμ€λ μ΅μνμΌλ‘ λ³κ²½λ¨
π 2. λ©€λ² νλμ λν λΆμ μ ν μ κ·Ό μ
public class CircleTest2 {
public static void main(String[] args) {
Circle c1;
c1 = new Cricle();
c1.radius = 1;
System.out.print("λ°μ§λ¦ " + c1.radius + "μΈ");
System.out.print("μμ λλ λ " + c1.getCircumference());
c1.radius = -99 // λΆμ μ ν μ κ·ΌμΌλ‘ μμ λ°μ§λ¦μ κ°μκΈ° μμλ‘ λ°κΏ μ μμ
System.out.print("μμ λμ΄λ " + c1.getArea());
}
}
λ°μ§λ¦μ νμ 0λ³΄λ€ ν¬κ² μ μ§λμ΄μΌν ν λ° κ°μ²΄κ° μΌμ νκΈ° μ λΆνμνκ² κ°μ΄ λ°λλ κ²½μ°κ° λ°μν μ μμ΅λλ€. μ΄λ λ― κ°μ²΄κ° μ€μ€λ‘ μΌμ νκΈ° μν΄μλ μμ ν μ²λ¦¬κ° νμν©λλ€. λλ¬Έμ ν¨λΆλ‘ κ°μ²΄ λ΄λΆμ λ€μ΄κ°μ§ λͺ»νλλ‘ μ΅μνμ μΈν°νμ΄μ€λ§ λ€μ΄λ΄λ μ 보 μλ(Information Hiding)μ΄ νμν©λλ€.
π 3. μ 보μλ(Information Hiding)
- κ°μ²΄ μΈλΆμ μ΅μνμ μΈν°νμ΄μ€λ§μ λλ¬λ΄κ³ κ°μ²΄μ λ΄λΆ ꡬνμ μ¨κΈΈ μ μμ
- λΆμ μ ν μ²λ¦¬μ 볡μ‘ν ꡬνμ λ§μ
- TV μ체λ 볡μ‘νκ² κ΅¬νλμ§λ§ μμ²μλ TV 리λͺ¨μ»¨λ§μΌλ‘ TVλ₯Ό μ¬μ©νλ κ²κ³Ό λΉμ·ν¨
- λ©€λ² λ³μ μ μΈμ private μ κ·Όμ μ΄ μ§μ μλ₯Ό μ΄μ©νμ¬ κ°μ²΄ λ΄λΆμμλ§ μ κ·Όνλλ‘ ν μ μμ
[2. λ©€λ² νλμ λν λΆμ μ ν μ κ·Ό μ]μμ λ³Έ Circle κ°μ²΄λ λ°μ§λ¦μ λΆμ μ νκ² μ κ·Όν μ μμμ΅λλ€. radius λ©€λ² publicμΌλ‘ λ§λ€μ΄ λ©μλλ₯Ό ν΅ν μμ ν μ κ·Όλ§ νμ©λλλ‘ λ§λ€ μ μμ΅λλ€.
π 4. κ°μ’ λ³μμ κΈ°λ³Έ μ ν¨ λ²μ
(1) μ§μ λ³μμ λ§€κ° λ³μ
- ν΄λΉ λ©μλ μμμλ§ μ¬μ© κ°λ₯
- λ©μλ μμ μ μλ ν λΉ, λ©μλ λ°ν μ²λ¦¬μμ μλ ν΄μ
- μλ°μ λͺ¨λ λ³μλ class μμμ μ μΈλκΈ° λλ¬Έμ μ μ λ³μκ° μμ
(2) λ©€λ² λ³μ
- λͺ¨λ λ©€λ² λ³μλ€μ κ·Έ ν΄λμ€ κ°μ²΄ μ 체μμ μ ν¨ν λ²μλ₯Ό κ°μ§
- κ°μ²΄κ° μμ±λλ©΄ ν λΉλκ³ , κ°μ²΄κ° μλ©Έλλ©΄ ν λΉ ν΄μ λ¨
- κ°μ²΄ μμ±μ μ§μ νκΈ° λλ¬Έμ κ°μ²΄κ° μμ±λμ΄μΌ μ κ·Όν μ μμ
π 5. λ©€λ² μ κ·Ό μ ν
λ©€λ²μ μ κ·Όνλ ν΄λμ€ | λ©€λ²μ μ κ·Ό μ§μ μ | |||
private | default | protected | public | |
κ°μ ν¨ν€μ§μ ν΄λμ€ | X | O | O | O |
λ€λ₯Έ ν¨ν€μ§μ ν΄λμ€ | X | X | X | O |
μ κ·Ό κ°λ₯ μμ | ν΄λμ€ λ΄ | λμΌ ν¨ν€μ§ λ΄ | λμΌ ν¨ν€μ§μ μμ ν΄λμ€ |
λͺ¨λ ν΄λμ€ |
π 6. Access λ©μλ
- μ κ·Ό μ§μ μλ‘ μΈλΆμμ κ°μ λ³κ²½νμ§ λͺ»νλλ‘ μ€μ ν λ, λ΄λΆ μ κ·Όμ΄ κ°λ₯νλλ‘ νλ κ²μ΄ Access λ©μλ
- ν΄λμ€ μ¬μ©μ μν΄ κ°μ²΄ μΈλΆμμ λΆμ μ ν μ²λ¦¬κ° λμ§ μλλ‘ ν¨
- νΉμ λ©€λ² λ³μμ κ°μ λ°ννλ getter( ) λ©μλ, νΉμ λ©€λ² λ³μλ₯Ό μ€μΈμ κ°μΌλ‘ μ€μ νλ setter( ) λ©μλ μ‘΄μ¬
- μμ ν μ κ·Όμ μ 곡νκΈ° μν΄ λΉμ₯ νμμλλΌλ μ묡μ μΌλ‘ κ°μ²΄ λ©€λ²λ₯Ό μ‘°μνκΈ° μν λ©μλλ₯Ό 미리 λ§λ¦
π 7. default ν΄λμ€μ public ν΄λμ€
(1) default ν΄λμ€
- μ κ·Όμ νμλ₯Ό μ무κ²λ μ μ§ μμ λ κΈ°λ³Έ κ°
- κ°μ ν¨ν€μ§ λ΄λΆμμλ§ κ°μ²΄ μμ±μ΄ κ°λ₯
(2) public ν΄λμ€
- class ν€μλ μμ publicμ μΆκ°νμ¬ μ΄λμλ ν΄λμ€ κ°μ²΄ μμ±μ νμ©
- νλμ μμ€ νμΌμλ νλμ ν΄λμ€λ§ publicμ΄ λ μ μμ
- μμ€ νμΌμ μ΄λ¦κ³Ό ν΄λμ€μ μ΄λ¦μ΄ λ°λμ κ°μμΌ ν¨
π II. μμ±μ
π 1. μμ±μ
- κ°μ²΄κ° μμ±λ λ λͺ μμ μΌλ‘ νΈμΆν νμλ μμ΄ λ¨ ν λ² μλμΌλ‘ νΈμΆλλ μΌμ’ μ λ©μλ
- Setterμ λ¬λ¦¬ κ°μ²΄μ λ©€λ² λ³μλ₯Ό μλμΌλ‘ μ΄κΈ°νν΄μ€
[μ κ·Όμ ν] <μμ±μλͺ > (맀κ°λ³μ1, ... ,맀κ°λ³μ n)
μμ±μ ꡬν 쑰건μ λ€μκ³Ό κ°μ΅λλ€. μμ±μλ public μμμ μ μΈνμ¬ λ°μ΄ν° λ©€λ²λ₯Ό μ΄κΈ°ν μν¬ μ μμ΅λλ€.
- μμ±μ μ΄λ¦μ ν΄λμ€ μ΄λ¦κ³Ό κ°μμΌν¨
- λ°λμ λ°ν μλ£νμ΄ μ§μ λμ§ μμμΌν¨
Circle();
π 2. default μμ±μ
- νλ‘κ·Έλλ¨Έκ° λ¨ νλλ λͺ μμ μΌλ‘ μμ±μλ₯Ό μ μνμ§ μμ κ²½μ° μ»΄νμΌλ¬μ μν΄ μλμΌλ‘ μ 곡
- μμ±μκ° νλλΌλ μ μλμ΄ μμΌλ©΄ μ 곡λμ§ μμ
- μΈμκ° μλ μμ±μλ‘ μ΄κΈ°νλ₯Ό μν μ무μΌλ‘ μΌμ΄λμ§ μμ
Circle c = new Circle();
new μ°μ°μμ μΈμ μλ λ©μλλ₯Ό νΈμΆνμ¬ default μμ±μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
π 3. 맀κ°λ³μλ₯Ό κ°μ§λ μμ±μ
- κ°μ²΄κ° κ°μ§ instance λ©€λ² λ³μμ μ΄κΈ° μ€μ κ°μ κ°μ²΄ μμ±κ³Ό λμμ μ λ¬ λ°μ
- κ°μ²΄ μμ± μ§ν μ΄κΈ°ν μμ μ΄ ν λ²μ μνλ¨
- νλ‘κ·Έλλ¨Έκ° λ°λ‘ κ°μ μ΄κΈ°νν μΌμ΄ μμ΄ μμ ν μ΄κΈ°ν κ°λ₯
Circle c = new Circle(1);
κ°μ²΄ μμ±κ°μ μμ±κ³Ό λμμ μ μΈνμ¬ μΈλΆ μ κ·Όμ μ°¨λ¨ν©λλ€.
π 4. μμ±μ μ€λ²λ‘λ©
- 맀κ°λ³μ 리μ€νΈκ° λ€λ₯Έ μμ±μλ€λ‘ μμ±μμ λ€μ€ μ μ κ°λ₯
- κ°μ²΄ μ΄κΈ°νλ₯Ό μν΄ μΈμκ° μ¬λ¬ κ° μμ μ μκ³ , μμ μλ μμ
Circle c1 = new Circle(1); // μ μ μΈμλ₯Ό λ°λ μμ±μ
Circle c2 = new Circle(); // μΈμλ₯Ό λ°μ§ μλ μμ±μ
Circle c3 = new Circle(2.58); // μ€μν μΈμλ₯Ό λ°λ μμ±μ
π 5. this( )
μΈμκ° λ§μ κ²½μ° μμ±μ λ³λ‘ κ°μ μ§μ νκΈ° 볡μ‘ν©λλ€. μ΄λ κ°μ₯ μΌλ°νλ μμ±μλ₯Ό λ€λ₯Έ μμ±μμμ μ¬μ©νμ¬ λ€λ₯Έ μμ±μ ꡬνμ μ¬μ©ν μ μμ΅λλ€.
- λ°λμ κΈ°μ‘΄ μμ±μμ 첫 νμ μμΉ
- νμ¬ ν΄λμ€μ μΈμ 리μ€νΈκ° μΌμΉνλ μμ±μμ νΈμΆ
- ν ν΄λμ€ λ΄μ νΉμ μμ±μ ꡬνμ μ€λ²λ‘λ©λμ΄ μλ λ€λ₯Έ μμ±μλ₯Ό νΈμΆ
π III. κ°λΉμ§ 컬λ μ
π κ°λΉμ§ 컬λ μ (Garbage Collection)
- μλ°λ new ν€μλμ μν΄ ν λΉλ λ©λͺ¨λ¦¬λ₯Ό λ€μ λ°λ©νλ μλ©Έμλ₯Ό κ°μ§μ§ μμ
- μ΄λ€ μ°Έμ‘° λ³μλ κ°μ²΄κ° μ°Έμ‘°λμ§ μκ³ λ©λͺ¨λ¦¬κ° λΆμ‘±ν κ²½μ° JVMμ κ°λΉμ§ 컬λ ν°κ° μλμΌλ‘ ν λΉμ ν΄μ ν¨
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] 07-2 μλ° κΈ°λ³Έ API (0) | 2022.10.06 |
---|---|
[Java] 07-1 μλ°μ ν¨ν€μ§μ λͺ¨λ (0) | 2022.10.05 |
[Java] 05. ν΄λμ€μ λ©€λ² (0) | 2022.09.29 |
[Java] 04. ν΄λμ€μ κ°μ²΄ (0) | 2022.09.28 |
[JAVA] # ν¬μΈν° VS μ°Έμ‘° μλ£ν (1) | 2022.09.23 |
μμ€ν κ³΅κ° κ°μ¬ν©λλ€