Programming/Java28 19 Interface μΈν°νμ΄μ€(Interface)λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ μΆμνλ₯Ό μν μ€μν κ°λ μ€ νλμ λλ€. μ£Όλ‘ μΆμ λ©μλμ μμ(static final λ³μ)λ₯Ό μ μνλ©°, λ€λ₯Έ ν΄λμ€μμ ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬν(Implement)νμ¬ μ¬μ©ν©λλ€. μΈν°νμ΄μ€μ νΉμ§ 1) μΆμ λ©μλμ μ§ν© μΈν°νμ΄μ€λ μΆμ λ©μλ(λ³Έμ²΄κ° μλ λ©μλ)λ₯Ό μ μν μ μμ΅λλ€. μ΄ λ©μλλ ꡬνμ΄ μκ³ , ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€μμ ꡬνν΄μΌ ν©λλ€. 2) ꡬν(Implement) μΈν°νμ΄μ€λ₯Ό ꡬννλ ν΄λμ€λ implements ν€μλλ₯Ό μ¬μ©ν©λλ€. ν΄λμ€μμλ μΈν°νμ΄μ€μμ μ μν λͺ¨λ μΆμ λ©μλλ₯Ό ꡬνν΄μΌ ν©λλ€. μ¬λ¬ μΈν°νμ΄μ€λ₯Ό λμμ ꡬνν μ μμ΅λλ€. 3) λ€μ€ μμ(Multiple Inheritance).. 2024. 1. 20. 18 Polymorphism λ€νμ±(Polymorphism)μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μμμ μ€μν κ°λ μ€ νλλ‘, λμΌν μ½λκ° μ¬λ¬ νμ μ κ°μ²΄μμ λ€λ₯΄κ² λμν μ μλ λ₯λ ₯μ μλ―Έν©λλ€. λ€νμ±μ μ½λμ μ μ°μ±μ λμ΄κ³ κ°μ²΄ κ°μ κ΄κ³λ₯Ό κ°κ²°νκ² νννλ λ° κΈ°μ¬ν©λλ€. - λΆλͺ¨ νμ μΌλ‘ μμ νμ μ κ°μ²΄ μ°Έμ‘° κ°λ₯ (리λͺ¨μ»¨ κ°μκ° μμΌλκΉ) - μμ νμ μΌλ‘ λΆλͺ¨ νμ κ°μ²΄ μ°Έμ‘° λΆκ°λ₯ (리λͺ¨μ»¨ κ°μκ° λ§μΌλκΉ) λ보기 // λ€νμ± - μ¬λ¬κ°μ§ ννλ₯Ό κ°μ§ μ μλ λ₯λ ₯ class Animal { void sound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { void sound() { System.out.println(.. 2024. 1. 20. 17 Abstraction κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (OOP)μμ "μΆμν(Abstractization)"λ 볡μ‘ν μμ€ν μ΄λ κ°λ μ κ°μΆλ € νννλ νλ‘μΈμ€λ₯Ό μλ―Έν©λλ€. μ΄λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ ν΅μ¬ μμΉ μ€ νλλ‘, ν΄λμ€λ κ°μ²΄λ₯Ό μ μν λ λΆνμν μΈλΆ μ¬νμ μ κ±°νκ³ μ€μν νΉμ§μ μ§μ€ν¨μΌλ‘μ¨ μ½λμ μ΄ν΄μ μ μ§λ³΄μλ₯Ό μ½κ² λ§λλλ€. μΆμνμ μ£Όμ νΉμ§ μΌλ°ν(Generalization): μΆμνλ μ¬λ¬ κ°μ²΄λ κ°λ μμ 곡ν΅λ νΉμ§μ λμΆνμ¬ μΌλ°μ μΈ ν΄λμ€λ μΈν°νμ΄μ€λ‘ μ μν©λλ€. μ΄λ‘μ¨ μ½λμ μ¬μ¬μ©μ±μ΄ λμμ§κ³ κ³μΈ΅μ μΈ κ΅¬μ‘°λ₯Ό νμ±ν μ μμ΅λλ€. μ¨κΉ(Hiding): μΆμνλ λΆνμν μΈλΆ μ¬νμ μ¨κΈ°κ³ μ€μν λΆλΆλ§μ 곡κ°ν¨μΌλ‘μ¨ μΈλΆμ λ ΈμΆλλ μ 보λ₯Ό μ νν©λλ€. μ΄λ μ 보 μλμ μμΉμ λ°λ¦ λλ€. λͺ¨λΈλ§(.. 2024. 1. 20. 16 Composition relationship νλ‘κ·Έλλ°μμμ "Composite relationship"μ "μμ(Inheritance)"μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μμ κ°μ²΄ κ°μ κ΄κ³λ₯Ό μ€λͺ νλ λ κ°μ§ λ€λ₯Έ κ°λ μ λλ€. Composite relationshipμ μΌλ°μ μΌλ‘ κ°μ²΄λ€ κ°μ "has-a" κ΄κ³λ₯Ό λνλ΄λ λ° μ¬μ©λλ©°, μ΄λ ν κ°μ²΄κ° λ€λ₯Έ κ°μ²΄λ₯Ό ν¬ν¨νκ±°λ κ·Έ μΌλΆλ‘μ μ‘΄μ¬ν¨μ μλ―Έν©λλ€. λ°λ©΄μ μμμ "is-a" κ΄κ³λ₯Ό λνλ΄λ©°, κ°μ²΄ κ°μ μΌλ°νμ νΉμνλ₯Ό λνλ λλ€. Aλ Bλ€ (A is B) → Inheritance (10%) Aλ Bλ₯Ό κ°μ§κ³ μλ€ (A has B) → Composition (90%) λ보기 // λΆλΆ κ°μ²΄ class Engine { void start() { System.out.println("Eng.. 2024. 1. 20. 15 Inheritance μμμ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(OOP)μ μ€μν κ°λ μ€ νλμ λλ€. μμμ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ ν΄λμ€ κ°μ κ³μΈ΅ ꡬ쑰λ₯Ό μ μνλ λ° μ¬μ©λ©λλ€. κΈ°μ‘΄ ν΄λμ€μ νΉμ±μ μ΄μ΄λ°μ μλ‘μ΄ ν΄λμ€λ₯Ό λ§λ€ μ μκ² ν΄μ£Όλ©°, μ½λμ μΌκ΄μ±μ μ μ§νκ³ μ μ§λ³΄μλ₯Ό μ©μ΄νκ² λ§λλλ€. μμμ 4κ°μ§ νΉμ§ μλ°λ λ¨μΌ μμλ§μ μ§μν©λλ€. μ΅μμ μ‘°μμ Object ν΄λμ€μ λλ€. μμ ν΄λμ€λ μ‘°μμΌλ‘λΆν° λͺ¨λ λ©€λ²λ₯Ό μμλ°μ΅λλ€. μμ ν΄λμ€μ λ©€λ²λ νμ μ‘°μλ³΄λ€ κ°κ±°λ λ λ§μ λ©€λ²λ₯Ό κ°μ΅λλ€. λ©μλ μ€λ²λΌμ΄λ©(Method Overriding) λ©μλ μ€λ²λΌμ΄λ©(Method Overriding)μ μμ ν΄λμ€μμ λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μ¬μ μνλ κ°λ μ λλ€. μ¦, λΆλͺ¨ ν΄λμ€μμ μ΄λ―Έ μ μλ λ©μλλ₯Ό μμ ν΄λ.. 2024. 1. 20. 14 Encapsulation (feat. Access modifier) μΊ‘μν(Encapsulation)λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μ ν μμΉμΌλ‘, λ°μ΄ν°μ κ·Έ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λ©μλ(ν¨μ)λ₯Ό νλμ λ¨μΌ λ¨μλ‘ λ¬Άλ κ²μ μλ―Έν©λλ€. μ΄λ μ 보 μλ(Information Hiding)μ΄λΌκ³ λ λΆλ¦½λλ€. μΊ‘μνλ νλ‘κ·Έλ¨μ λͺ¨λμ±μ λμ΄κ³ , μ½λλ₯Ό λ μ¬μ¬μ© κ°λ₯νκ² λ§λ€λ©°, μ½λμ μ μ§λ³΄μμ±μ ν₯μμν΅λλ€. μΊ‘μνμ ν΅μ¬ μμ΄λμ΄λ κ΄λ ¨ μλ λ°μ΄ν°μ κ·Έ λ°μ΄ν°λ₯Ό μ‘°μνλ ν¨μλ₯Ό νλμ λ¨μλ‘ λ¬Άμ΄ μΈλΆμμ μ§μ μ κ·Όνμ§ λͺ»νκ² νλ κ²μ λλ€. λμ , κ°μ²΄μ λ©μλλ₯Ό ν΅ν΄μλ§ λ°μ΄ν°μ μ κ·Όνκ³ μ‘°μν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ°μ²΄ λ΄λΆμ ꡬν μΈλΆμ¬νμ κ°μΆκ³ , μΈλΆμμλ μ€μ§ 곡κ°λ λ©μλλ₯Ό ν΅ν΄μλ§ κ°μ²΄μ μνΈμμ©ν μ μκ² λ©λλ€. μ κ·Ό μ μ΄μ(Access M.. 2024. 1. 20. 13 Method λ©μλλ νΉμ μμ μ μννλ μ½λ λΈλ‘μ λνλ΄λ©°, νμν λ νΈμΆνμ¬ μ¬μ©ν μ μμ΅λλ€. λ©μλλ μ½λλ₯Ό λͺ¨λννκ³ μ¬μ¬μ©μ±μ λμ΄κΈ° μν μ€μν κ°λ μ€ νλμ λλ€. μλ°μμλ μΈμ€ν΄μ€ λ©μλμ ν΄λμ€ λ©μλ(λλ μ μ λ©μλ) λ κ°μ§ μ νμ λ©μλκ° μμ΅λλ€. μ΄ λ μ νμ λ©μλλ μλ‘ λ€λ₯Έ μ©λμ νΈμΆ λ°©μμ κ°μ§κ³ μμ΅λλ€. 1. μΈμ€ν΄μ€ λ©μλ (Instance Method) μΈμ€ν΄μ€ λ©μλλ νΉμ κ°μ²΄μ μΈμ€ν΄μ€μ μ’ μλ λ©μλμ λλ€. μ¦, κ°μ²΄λ₯Ό μμ±ν΄μΌλ§ ν΄λΉ λ©μλλ₯Ό νΈμΆν μ μμ΅λλ€. μΈμ€ν΄μ€ λ©μλλ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§λλ€: λ©μλ μ μ μ static ν€μλκ° μμ΅λλ€. λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μμ μ κ·Όν μ μμ΅λλ€. κ°μ²΄λ₯Ό μμ±ν νμμΌλ§ ν΄λΉ λ©μλλ₯Ό νΈμΆν .. 2024. 1. 20. 12 Constructor μμ±μ(Constructor)λ κ°μ²΄λ₯Ό μμ±ν λ νΈμΆλλ νΉλ³ν λ©μλλ‘, κ°μ²΄μ μ΄κΈ°νλ₯Ό λ΄λΉν©λλ€. μμ±μλ ν΄λμ€ μ΄λ¦κ³Ό λμΌνλ©°, κ°μ²΄λ₯Ό μμ±ν λ new ν€μλμ ν¨κ» νΈμΆλ©λλ€. μλ°μμλ μμ±μμ μ΄λ¦ μμ λ°ν νμ μ λͺ μνμ§ μμ΅λλ€. μμ±μμ μ£Όμ λͺ©μ μ κ°μ²΄κ° λ©λͺ¨λ¦¬μ ν λΉλκ³ μΈμ€ν΄μ€ λ³μλ€μ΄ μ΄κΈ°νλ λ νμν μμ μ μννλ κ²μ λλ€. κ°μ²΄λ₯Ό μμ±ν λλ§λ€ μ€νλλ©°, μμ±μλ₯Ό ν΅ν΄ κ°μ²΄μ μ΄κΈ° μνλ₯Ό μ€μ ν μ μμ΅λλ€. λ보기 public class Car { // μΈμ€ν΄μ€ λ³μ String brand; int year; // 맀κ°λ³μκ° μλ μμ±μ public Car(String brand, int year) { this.brand = brand; this.year = ye.. 2024. 1. 19. 11 Class intro - feat. Field (Member variable) ν΄λμ€(Class)λ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°(OOP)μμ μ¬μ©λλ ν΅μ¬ κ°λ μ€ νλλ‘, λΉμ·ν νΉμ±μ κ°μ§ κ°μ²΄λ€μ λ¬Άμ΄μ μΆμνν μ€κ³ λꡬμ λλ€. ν΄λμ€λ κ°μ²΄μ μνλ₯Ό λνλ΄λ μμ±(λ©€λ² λ³μ)κ³Ό κ°μ²΄κ° μνν μ μλ λμμ μ μν λ©μλ(λ©€λ² ν¨μ)λ‘ κ΅¬μ±λ©λλ€. μ¦, ν΄λμ€λ μΈμ€ν΄μ€(κ°μ²΄)λ₯Ό μμ±νκΈ° μν μ€κ³λμ κ°μ΅λλ€. μλ₯Ό λ€μ΄, μννΈ μ€κ³λμλ μ°½λ¬Έμ΄ μ΄λ€ λ°©ν₯μ μλμ§ μ°½λ¬Έ λͺ¨μμ μ΄λ»κ² ν μ§μ λν μ λ³΄κ° μ€κ³λ(ν΄λμ€)μ μμ±λλ κ²μ λλ€. κ·Έλ¦¬κ³ μ€κ³λμ μ§μμ¬νμ λ°λΌμ κ°μ λͺ¨μμ μννΈκ° λ§λ€μ΄μ§λ μ리μ λλ€. νλ(Fields) ν΄λμ€ μμ νλ(Fields)λ ν΄λμ€μ λ©€λ² λ³μλ‘, κ°μ²΄μ μνλ₯Ό μ μ₯νλ μν μ ν©λλ€. νλλ ν΄λμ€ λ΄λΆμ μ μΈλλ©°, κ°μ²΄μ μμ±.. 2024. 1. 19. μ΄μ 1 2 3 4 λ€μ