-
[Java] ch5 μλ° OOP λ€νμ± / μΆμ λ©μλμ μΆμ ν΄λμ€
2023. 9. 8.
06 λ€νμ±(polymorphism)
class Tiger extends Animal implements Predator, Barkable { } Tiger tiger = new Tiger(); // Tiger is a Tiger Animal animal = new Tiger(); // Tiger is a Animal Predator predator = new Tiger(); // Tiger is a Predator Barkable barkable = new Tiger(); // Tiger is a Barkable
- νλμ κ°μ²΄κ° μ¬λ¬ κ°μ μλ£ν νμ μ κ°μ§ μ μλ κ² (ex - tiger κ°μ²΄λ Tiger, Animal ν΄λμ€μ κ°μ²΄μ΄λ©΄μ Barakable, Predator μΈν°νμ΄μ€μ κ°μ²΄)
- κ°μ²΄μ§ν₯ μΈμ΄μ νΉμ§
νλ³ν(Casting)
- μ μΊμ€ν (upcasting) : (μμν΄λμ€μ μΈμ€ν΄μ€μ λν) μμν΄λμ€μ νμ μ λ νΌλ°μ€ λ³μλ₯Ό λΆλͺ¨ν΄λμ€ νμ μΌλ‘ νλ³ν νλ κ². (νμ λ³ν ꡬ문 μλ΅ κ°λ₯, μλ νλ³ν λ¨)
- λ€μ΄μΊμ€ν (downcasting) : (μμν΄λμ€μ μΈμ€ν΄μ€μ λν) λΆλͺ¨ν΄λμ€ νμ μ λ νΌλ°μ€ λ³μλ₯Ό μμν΄λμ€ νμ μΌλ‘ νλ³ν νλ κ². (νμ λ³ν ꡬ문 μλ΅ λΆκ°, νλ³ν νμ μ λͺ μν΄μΌλ¨)
- μμ ν΄λμ€ νμ μ λ νΌλ°μ€ λ³μλ₯Ό λΆλͺ¨ ν΄λμ€ νμ μ λ νΌλ°μ€ λ³μλ‘ λ€λ£° μ μλ€
insteadof
λ νΌλ°μ€λ³μμ΄λ¦ instanceof ν΄λμ€λͺ // λ³μκ° ν΄λμ€μ κ°μ²΄μ΄λ©΄ true, μλλ©΄ false λ°ν
- μ΄λ€ κ°μ²΄κ° νΉμ ν΄λμ€μ κ°μ²΄μΈμ§λ₯Ό μ‘°μ¬ν λ μ¬μ©λλ μλ°μ λ΄μ₯ λͺ λ Ήμ΄
- ν΄λΉ λ³μκ° νλ³ν κ°λ₯νμ§ μ¬λΆλ₯Ό νμΈνλ μ©λκΈ°λ ν¨
- animal instanceof Tiger = animal κ°μ²΄λ Tiger ν΄λμ€λ‘ λ§λ€μ΄μ§ κ°μ²΄μΈκ°? λ₯Ό 묻λ 쑰건문
μΈμ©
[Java] μλ° - λ€νμ±μ μ΄ν΄ (νλ³ν λ° instanceof μ°μ°μ)
07 μΆμ λ©μλ / μΆμ ν΄λμ€
μΆμ λ©μλ(abstract method)
abstract λ°ννμ λ©μλμ΄λ¦(); //μ μΈλ§ νκ³ κ΅¬νμ x
- μμ ν΄λμ€μμ λ°λμ μ€λ²λΌμ΄λ©ν΄μΌλ§ μ¬μ©ν μ μλ λ©μλ
- μ μΈλΆλ§ μ‘΄μ¬νκ³ κ΅¬νλΆλ μμ±λμ΄ μμ§ μμμ μΆμ λ©μλκ° ν¬ν¨λ ν΄λμ€λ₯Ό μμλ°λ μμ ν΄λμ€κ° λ°λμ μΆμ λ©μλλ₯Ό ꡬννλλ‘ νκΈ° μν¨
μΆμ ν΄λμ€(abstract class)
abstract class ν΄λμ€μ΄λ¦ { ... abstract λ°ννμ λ©μλμ΄λ¦(); ... }
- νλ μ΄μμ μΆμ λ©μλλ₯Ό ν¬ν¨νλ ν΄λμ€
- λ°λμ ν¬ν¨ν΄μΌ νλ λ©μλλ₯Ό μΆμ ν΄λμ€μ μΆμ λ©μλλ‘ μ μΈ → μ΄ ν΄λμ€λ₯Ό μμλ°λ λͺ¨λ ν΄λμ€μμ μΆμ λ©μλλ₯Ό μ μνλλ‘
- μΈμ€ν΄μ€λ₯Ό μμ±ν μ X (Animal a= new Animal() λΆκ°)→ μμμ ν΅ν΄ μμ ν΄λμ€λ₯Ό λ§λ€κ³ μμ ν΄λμ€κ° μΆμ λ©μλλ₯Ό μ€λ²λΌμ΄λ© ν΄μΌ μμ ν΄λμ€λ₯Ό ν΅ν΄ μΈμ€ν΄μ€ μμ± κ°λ₯
- μ΄μΈμλ μΌλ° ν΄λμ€μ λμΌ (μμ±μ, νλ, μΌλ° λ©μλλ ν¬ν¨ κ°λ₯)
μΈν°νμ΄μ€μ μΆμ ν΄λμ€μ μ°¨μ΄
- μλ° 8 λ²μ λΆν° μΈν°νμ΄μ€μ default λ©μλκ° μΆκ°→ μΆμ ν΄λμ€μμ μ°¨μ΄μ μ΄ λͺ¨νΈ (μμ ν΄λμ€μ λ©μλλ₯Ό λ°λμ ꡬννλλ‘ νλ κΈ°λ₯μ΄ λμΌνλ―λ‘)
- νμ§λ§ μΆμ ν΄λμ€λ μΈν°νμ΄μ€μ λ¬λ¦¬ μΌλ° ν΄λμ€μ²λΌ κ°μ²΄ λ³μ, μμ±μ, private λ©μλ λ±μ κ°μ§ μ μμ (μΈν°νμ΄μ€λ x
'π Study > : Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] ch5 μλ° μΈν°νμ΄μ€ (0) 2023.09.08 [Java] ch5 μλ° μμ (λ©μλ μ€λ²λ‘λ© vs λ©μλ μ€λ²λΌμ΄λ©) / μμ±μ (0) 2023.09.05 [Java] ch5 μλ° κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° OOP (ν΄λμ€, λ©μλ, μλ° λ³μ) (0) 2023.09.05 [Java] ch4 μ μ΄λ¬Έ (0) 2023.08.31 [Java] ch3 μλ°μ μλ£ν (Data type) μ 리 (1) 2023.08.13 λκΈ