Javaλ κ°μ²΄μ§ν₯ μΈμ΄λ€.
κ°μ²΄μ§ν₯μ ν΅μ¬ κ°λ μ€ κ°μ₯ μ€μν λ κ°μ§κ° μμ(Inheritance)κ³Ό λ€νμ±(Polymorphism)μ΄λ€.
μ΄ λ κ°λ μ ν¨κ» μ΄ν΄ν΄μΌ νλ€.
1. μμ(Inheritance)
μμμ κΈ°μ‘΄ ν΄λμ€μ μμ±κ³Ό κΈ°λ₯μ λ¬Όλ € λ°μ μλ‘μ΄ ν΄λμ€λ₯Ό λ§λλ κ²μ΄λ€.
class Animal {
void sound() {
System.out.printIn("μ리λ₯Ό λΈλ€");
}
}
class Dog extends Animal{
}
- Animal → λΆλͺ¨ ν΄λμ€(Super Class)
- Dog → μμ ν΄λμ€(Sub Class)
- extends → μμ ν€μλ
Dogλ Animalμ λ©μλλ₯Ό κ·Έλλ‘ μ¬μ©ν μ μλ€.
1) μμμ λͺ©μ
- μ½λ μ¬μ¬μ©
- κ³μΈ΅ ꡬ쑰 νν
- μ μ§λ³΄μ μ©μ΄
2. λ©μλ μ€λ²λΌμ΄λ©(Overriding)
μμ ν΄λμ€μμ λΆλͺ¨μ λ©μλλ₯Ό μ¬μ μνλ κ²
class Dog extends Animal {
@Override
void sound() {
System.out.printIn("λ©λ©");
}
}
쑰건
- λ©μλ μ΄λ¦ λμΌ
- λ§€κ° λ³μ λμΌ
- λ°ν νμ λμΌ
3. λ€νμ±(Polymorphism)
λ€νμ±μ νλμ νμ μΌλ‘ μ¬λ¬ κ°μ²΄λ₯Ό λ€λ£° μ μλ μ±μ§μ΄λ€.
Animal a = new Dog();
- μ°Έμ‘° νμ → Animal
- μ€μ κ°μ²΄ → Dog
μ΄κ² λ€νμ±μ ν΅μ¬μ΄λ€.
4. μ μΊμ€ν (Upcasting)
μμ κ°μ²΄λ₯Ό λΆλͺ¨ νμ μΌλ‘ μ°Έμ‘°νλ κ²
Animal a = new Dog();
μλμΌλ‘ μ΄λ£¨μ΄μ§λ€.
νΉμ§
- λΆλͺ¨ νμ μ λ©μλλ§ μ κ·Ό κ°λ₯
- μ€μ μ€νμ μμ λ©μλ
5. λμ λ°μΈλ©(Dynamic Binding)
λ©μλ νΈμΆμ μ°Έμ‘° νμ μ΄ μλλΌ μ€μ κ°μ²΄ κΈ°μ€μΌλ‘ κ²°μ λλ€.
Animal a = new Dog();
a.sound(); //"λ©λ©" μΆλ ₯
μ»΄νμΌ μμ → Animal νμ
μ€ν μμ → Dog κ°μ²΄
μ΄κ²μ΄ λ€νμ±μ ν΅μ¬ μ리λ€.
6. λ€μ΄μΊμ€ν (Downcasting)
λΆλͺ¨ νμ μ λ€μ μμ νμ μΌλ‘ λ³ννλ κ²
Dog a = (Dog) a;
λͺ μμ νλ³νμ΄ νμνλ€.
μ€μ κ°μ²΄κ° ν΄λΉ νμ μ΄ μλ κ²½μ° μμΈκ° λ°μνλ€.
if (a instanceof Dog) {
Dog d = (Dog) a;
}
7. μμκ³Ό λ€νμ±μ κ΄κ³
μμμ΄ μμ΄μΌ λ€νμ±μ΄ κ°λ₯νλ€.
- μμ → νμ κ³μΈ΅ νμ±
- λ€νμ± → λΆλͺ¨ νμ μΌλ‘ μμ κ°μ²΄λ₯Ό λ€λ£Έ
- μ€λ²λΌμ΄λ© → λμ λ°μΈλ© λ°μ
8. μ μ€μνκ°?
μ€λ¬΄μμ κ°μ₯ λ§μ΄ μ°μ΄λ ꡬ쑰
List<Animal> animals = new ArrayList<>();
λΆλͺ¨ νμ μΌλ‘ 컬λ μ μ λ§λ€κ³ , μ¬λ¬ μμ κ°μ²΄λ₯Ό λ£λλ€.
μ΄κ² κ°μ²΄ μ§ν₯ μ€κ³μ κΈ°λ³Έ ν¨ν΄μ΄λ€.
'Back-End > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| 09. μΈν°νμ΄μ€(Interface) (0) | 2026.02.11 |
|---|---|
| 08. μΆμ ν΄λμ€(Abstract Class) (0) | 2026.02.11 |
| 06. λ°°μ΄κ³Ό ArrayList (0) | 2026.02.11 |
| 05. ν΄λμ€μ κ°μ²΄ (0) | 2026.02.11 |
| 04. μ μ΄ νλ¦(Control Flow) (0) | 2026.02.11 |