Day 18(21.09.30) - Gomserker/Java-101 GitHub Wiki
β» μ€λμ μ 체μ μΌλ‘ λ°°μ΄ λ΄μ©λ€μ λμ§μ΄λ³΄λ λ μ΄μκΈ°μ, 곡λΆνλ©° μ΄ν΄κ° λΆμ‘±νμλ λΆλΆμ λ€μ μ§μ΄λ³΄κ³ μ νλ€.
25. μλ νμ λ³ν(Promotion) in μμ
(1) μλ νμ λ³ν(Promotion)μ΄λ?
νλ‘κ·Έλ¨ μ€ν λμ€μ μλμΌλ‘ νμ λ³νμ΄ μΌμ΄λλ κ²μ λ§νλλ°, μλμ κ°μ΄ μ¬μ©λλ€.
λΆλͺ¨ν΄λμ€ λ³μ = μμν΄λμ€νμ
;
μμ κ°μ΄ μ¬μ©νμ λ, μμμ λΆλͺ¨μ νΉμ§κ³Ό κΈ°λ₯μ μμλ°κΈ° λλ¬Έμ λΆλͺ¨μ λμΌν μ·¨κΈμ λ°κ² λλ€. μλ μμμμ μ΄ν΄λ³΄μ.
public class Parent {
public void method1() {
System.out.println("Parent-method1()");
}
public void method2() {
System.out.println("Parent-method2()");
}
}
public class Child extends Parent{
@Override
public void method2() {
System.out.println("Child-method2()");
}
public void method3() {
System.out.println("Child-method3()");
}
}
public class ChildExample {
public static void main(String[] args) {
Child child = new Child();
Parent parent = child; // but, μλ νμ
λ³ν μ€ν (Child to Parent)
parent.method1();
parent.method2();
System.out.println(parent == child);
parent.method3(); // μ»΄νμΌ μλ¬
}
}
Result
Parent-method1()
Child-method2()
true
μ¬κΈ°μ parent μ°Έμ‘°λ³μκ° Parent νμ
μ΄λ λΉμ°ν Parnet μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νλ κ²μ΄ λ§λ κ²μΌλ‘ λ³΄μΌ μ μμΌλ, μ κ²°κ³Όμμ νμΈν μ μλ―μ΄ parent λΏλ§ μλλΌ child μ°Έμ‘°λ³μλ λμΌν μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νκ³ μλ€λ κ²μ λ³Ό μ μλ€. μ΄λ κ² Child μΈμ€ν΄μ€κ° Parent λ³μμ λμ
λμ΄ μλνλ³ν λ κ²μ΄λ€.
κ·Έλ¦¬κ³ , μλνμ
λ³νμ μ€μν νΉμ§μ, μμ ν΄λμ€κ° λΆλͺ¨ νμ
μΌλ‘ μλμΌλ‘ λ³νλ μ΄νμλ λΆλͺ¨ ν΄λμ€μ μ μΈλ νλμ λ©μλμλ§ μ κ·Ό κ°λ₯νλ€λ κ²μ΄λ€. λ³μλ μμ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νμ§λ§ λ³μλ‘μ μ κ·Ό κ°λ₯ν λ©€λ²λ λΆλͺ¨ ν΄λμ€ λ©€λ²λ‘λ§ νμ λλ€λ λ»μΈλ°, μ μμμμ λ³Ό μ μλ―μ΄, μμ ν΄λμ€μλ§ μλ method3()λ₯Ό νΈμΆνλ €κ³ νλ©΄ μ»΄νμΌ μλ¬κ° λ°μνλ€. λ€λ§, μμ ν΄λμ€μμ μ¬μ μ(Override)λ λ©μλκ° μλ€λ©΄ μμ ν΄λμ€μ λ©μλκ° λμ νΈμΆλλ€.