μ°μ μλ°μμλ μΆμν λ©μλλ λ§κ·Έλλ‘ μΆμννλκ±°λΌ κ·Έλ₯ public void Name();
μ΄λ°μμΌλ‘ λΉμλκ³ μμλ°μ ν΄λμ€μμ μ€λ²λΌμ΄λν΄μ μ μ ν΄μ€λ€κ³ μκ³ μλλ°
μ λν° C#μμ λ€λ₯Έμ¬λμ΄ μ§λ μ½λ 곡λΆνλ©΄μ 보λ μ¬κΈ°μλ μΆμν λ©μλμΈλ°λ μμ λ΄μ©μ΄ μ μ λμλ€?
κ·ΈλΌ μ¬κΈ°μ κΆκΈνκ²Β
μλ₯Όλ€μ΄μ protected virtual void Name(){
Β μ΄κ²μ κ² μ μ
μ΄κ²μ κ²
}
μ΄λ κ² μκ³
μ΄κ²μ λ€λ₯Έ ν΄λμ€μμ μμλ°μμ
λ€μΒ protected override void Name(){
}
μ΄λ κ² λ μ€λ²λΌμ΄λλ‘ μ μ ν΄μ£Όλ©΄ μ΄λ»κ² λλκ±°μΌ?
κ·ΈλΌ κ·Έ λΆλͺ¨μ μΆμν λ©μλλ μ¬λΌμ§κ³ μ¬μ μ λκ±Έλ‘ μ μ©λλκ±°μΌ?
virtualμ κ°μν¨μκ³ abstractκ° μΆμν, κ·Έλ¦¬κ³ c#μμλ interface, abstract, virtual λ€ μ©λκ° λ€λ₯΄λ 곡λΆν΄λ°
http://gamelaboratory.tistory.com/entry/abstract-interface-virtual
μμ κΈμ΄ μ 리 μ ν΄λ¨λ€ γ γ μ½μ΄λ³΄κ³ λͺ¨λ₯΄κ² μΌλ©΄ λ€μ μ§λ¬Έν΄μ€
μν κ°μ¬κ°μ¬ μ΄μ©μ§ λκ° μ’ μ΄μνλλΌ κ°μνμꡬλ§!
μ€λ²λΌμ΄λ ν λ©μλ μμμ base μ¨μΌ λ¨
μ νκ°μ§ λ κΆκΈνκ² μλλ° μλ₯Όλ€λ©΄ public virtual void Name() { Rigidbody rd = GetComponent<Rigidbody>(); } μ΄λ°μμΌλ‘ κ°μ λ©μλμ μ»΄ν¬λνΈλ₯Ό μ°Έμ‘°νκ³ μ΄ λ©μλκ° μλ ν΄λμ€λ₯Ό μμ λ°μ Name2 μ€ν¬λ¦½νΈκ° μλλ° λ abcλΌλ μ€λΈμ νΈλ₯Ό νμ΄μ΄λΌν€λ·°μ μμ±νκ³ κ±°κΈ°μ Name2λΌλ μ€ν¬λ¦½νΈλ₯Ό μ°κ²°νκ³ Nameλ₯Ό μ€ννλ©΄ λΉλ‘ Nameμ΄ μ΄ μ€λΈμ νΈμ μ§μ μ μΌλ‘ λλκ·Έν΄μ μ°κ²°μ΄ μλμμ΄λ μ€ν¬λ¦½νΈκ° λΆμ°©λ Name2κ° Nameλ₯Ό μμλ°μΌλ Name2μμ κ°μ λ©μλ μ€ννλ©΄ Nameμ΄ λΆμ°©λ μ€λΈμ νΈμ 리μ§λλ°λκ° μ°Έμ‘° λλ건κ°μ?
λ€ μ λ κ²μν΄λ΄μ λ΄€μ΄μ baseν΄μ λΆλͺ¨κ²μ μ€ννλλΌκ³ μ base.name μ΄λ°μμΌλ‘μ κ·Έλ°λ° κ·Έλ κ²νλ©΄ λΆλͺ¨ μ€ν¬λ¦½νΈλ μ무κ²λ μ°κ²°μ΄ λ μ€λΈμ νΈκ° μλλ° μμμ΄ λΆλͺ¨νν μμλ°κ³ μμΌλ μμ μ€ν¬λ¦½νΈκ° λΆμ°©λ 리μ§λλ°λκ° λΆλͺ¨μ μ λ©μλ λ³μλ‘ λ€μ΄κ°λ건κ°μ?
γ΄γ΄ κ·Έκ±°λμ λ³κ°μ
λ΄κ° λ κΈμ μ΄ν΄ν λ°λ‘λ 리μ§λλ°λ μ°Έμ‘°λ¨
λΆλͺ¨λ μμμ΄λ λ°λ‘보μ§λ§κ³ μ€λΈμ νΈμ μμμ΄ λΆμΌλ©΄ λΆλͺ¨λ κ°μ΄ λΆμλ€κ³ μκ°ν΄
λ· μ§λ¬ΈμΈ λΆλͺ¨μ λ©μλμμ 리μ§λλ°λλ μμμ΄ λΆμ μ€λΈμ νΈμ 리μ§λλ°λμ, μμκ³Ό λΆλͺ¨λ₯Ό λ°λ‘ 보μ§λ§κ³ μΈνΈλ‘ λ΄ γ γ
μν νλ€ κ³ λ§μ