Inheritance
κΈ°μ‘΄μ ν΄λμ€λ₯Ό μ¬ μ¬μ©νμ¬ μλ‘μ΄ ν΄λμ€λ‘ μμ±νλ κ²
μ½λλ₯Ό μ¬μ¬μ©νμ¬ μλ‘μ΄ ν΄λμ€λ‘ μμ±ν μ μμΌλ©° λ€νμ±μ ꡬνν κ²μ΄λ€.
Java λ ꡬ쑰μ μΌλ‘ λ€μ€ μμμ΄ λΆκ°λ₯ νλ€. κ° ν΄λμ€λ νλμ ν΄λμ€μμλ§ μμμ΄ κ°λ₯νμ§λ§ λ κ°μ΄μμ μΈν°νμ΄μ€μ ꡬνμ κ°λ₯νλ€.
Covariant 쑰건μ λ§μ‘±νλ©΄ 리ν΄νμ μ΄ λ¬λΌλ μμμ΄ κ°λ₯νλ€.
abstract class Parent {
Number run() {
System.out.println("Parent Run");
return 0;
}
}
class Child extends Parent {
Integer run() {
System.out.println("Child Run");
return 1;
}
}
μ μ½λμμλ Number
ν΄λμ€κ° Integer
ν΄λμ€μ μνΌ ν΄λμ€μ΄λ κ°λ₯νλ€.
κ²°κ³Όλ μλμ κ°λ€.
Child Run
1
λ©μλμ κ³΅λ³ λ°ν νμ μ΄λ κ·Έ λ©μλκ° μ€λ²λΌμ΄λ© λ λ λ μ’μ (narrower) νμ μΌλ‘ κ΅μ²΄ν μ μλ€λ κ²μ΄λ€.
μ°Έκ³ μλ£
β OOP λ? Encapsulation β