μΆμ²
ChatGPT
λ°νμ λ€νμ±(Polymorphism)μ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ ν΅μ¬ κ°λ μ€ νλλ‘, νλ‘κ·Έλλ―Έ μ€ν μ€μ κ°μ²΄κ° μμ ν΄λμ€ λλ μΈν°νμ΄μ€μ λ©μλλ₯Ό νΈμΆν λ, μ€μ λ‘ μ΄λ€ ν΄λμ€μ λ©μλκ° μ€νλ μ§λ₯Ό κ²°μ νλ κΈ°λ₯μ λ§νλ€.
λ°νμ λ€νμ±μ κ°λ
λ°νμ λ€νμ±μ μ£Όλ‘ μμ(Inheritance)κ³Ό μΈν°νμ΄μ€(Interface)λ₯Ό ν΅ν΄ ꡬνλλ€. μμ ν΄λμ€(λλ μΈν°νμ΄μ€)μ μ°Έμ‘° λ³μλ₯Ό μ¬μ©ν΄ νμ ν΄λμ€μ λ©μλλ₯Ό νΈμΆν μ μμΌλ©°, νΈμΆλ λ©μλλ μ°Έμ‘° λ³μκ° κ°λ¦¬ν€λ κ°μ²΄μ μ€μ νμ μ λ°λΌ κ²°μ λλ€.
ꡬνλ°©λ²
1. μμμ ν΅ν λ€νμ±
- νμ ν΄λμ€λ μμ ν΄λμ€μ λ©μλλ₯Ό μ€λ²λΌμ΄λνλ€.
- μμ ν΄λμ€μ μ°Έμ‘° λ³μλ νμ ν΄λμ€μ κ°μ²΄λ₯Ό κ°λ¦¬ν¬ μ μλ€.
- λ©μλκ° νΈμΆλ λ, μ€μ κ°μ²΄μ νμ μ λ°λΌ ν΄λΉ λ©μλκ° μ€νλλ€.
class Animal {
void makeSound() {
System.out.println("Some generic animal sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Bark");
}
}
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // λ°νμ μμ Dogμ λ©μλκ° νΈμΆλ¨
Animal myCat = new Cat(); // λ°νμ μμ Catμ λ©μλκ° νΈμΆλ¨
myDog.makeSound(); // "Bark"
myCat.makeSound(); // "Meow"
}
}
Animal ν΄λμ€μ μ°Έμ‘° λ³μλ₯Ό μ¬μ©ν΄ Dogμ Cat κ°μ²΄λ₯Ό μμ±νκ³ makeSound λ©μλλ₯Ό νΈμΆν λ, κ°κ° Dogμ Catμ μ€λ²λΌμ΄λλ λ©μλκ° μ€νλλ€.
2. μΈν°νμ΄μ€λ₯Ό ν΅ν λ€νμ±
- μΈν°νμ΄μ€λ λ©μλμ μκ·Έλμ²λ§ μ μνκ³ , ꡬνμ μ΄λ₯Ό μμνλ ν΄λμ€μμ μ 곡νλ€.
- μΈν°νμ΄μ€ νμ μ μ°Έμ‘° λ³μκ° μ΄λ₯Ό ꡬνν κ°μ²΄λ₯Ό κ°λ¦¬ν€κ³ , λ©μλλ₯Ό νΈμΆνλ©΄ μ€μ κ°μ²΄μ ꡬνλ λ©μλκ° μ€νλλ€.
interface Animal {
void makeSound();
}
class Dog implements Animal {
public void makeSound() {
System.out.println("Bark");
}
}
class Cat implements Animal {
public void makeSound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // λ°νμ μμ Dogμ λ©μλκ° νΈμΆλ¨
Animal myCat = new Cat(); // λ°νμ μμ Catμ λ©μλκ° νΈμΆλ¨
myDog.makeSound(); // "Bark"
myCat.makeSound(); // "Meow"
}
}
λ°νμ λ€νμ±μ λμ λ°©μ
λμ λ°μΈλ©
λ°νμ λ€νμ±μ μ»΄νμΌ μμ μ΄ μλ μ€ν μμ μ μ€μ λ©μλκ° κ²°μ λλ λμ λ°μΈλ©μ ν΅ν΄ μ€νλλ€. μ¦, μ»΄νμΌλ¬λ μ°Έμ‘° λ³μκ° κ°λ¦¬ν¬ μ μλ λ©μλκ° μλ€λ κ²λ§ μκ³ μμΌλ©°, μ΄λ€ λ©μλκ° νΈμΆλ μ§λ λ°νμμ κ°μ²΄μ νμ μ λ°λΌ κ²°μ λλ€.
λ©μλ μ€λ²λΌμ΄λ©
λ°νμ λ€νμ±μ λ©μλ μ€λ²λΌμ΄λ©μ ν΅ν΄ ꡬνλλ€. λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό νμ ν΄λμ€μμ μ¬μ μ(μ€λ²λΌμ΄λ©)ν¨μΌλ‘μ¨, λμΌν λ©μλ νΈμΆμ΄ λ€λ₯΄κ² λμν μ μλ€.
μ₯μ
1. μ½λ μ¬μ¬μ©μ±
λμΌν μ½λλ‘ λ€μν κ°μ²΄λ₯Ό μ²λ¦¬ν μ μμ΄ μ½λμ μ¬μ¬μ©μ±μ΄ λμμ§λ€.
2. μ μ°μ±
μμ€ν μ΄ νμ₯λκ±°λ λ³κ²½λ λ μ½λ μμ μ΄ μ΅μνλλ€. μλ‘μ΄ ν΄λμ€κ° μΆκ°λλλΌλ κΈ°μ‘΄ μ½λλ₯Ό μμ ν νμ μμ΄ κΈ°μ‘΄ γ΄κ΅¬μ‘°λ₯Ό μ¬μ©ν μ μλ€.
3. μ μ§λ³΄μμ±
μ½λκ° λ³κ²½λλλΌλ μ μ§λ³΄μμ κ΄λ¦¬κ° μ¬μμ§λ€.
λ¨μ
1. μ±λ₯ μ ν
λμ λ°μΈλ©μ λ°νμμ λ©μλλ₯Ό κ²°μ νκΈ° λλ¬Έμ, μ μ λ°μΈλ©μ λΉν΄ μ±λ₯μ΄ λ¨μ΄μ§ μ μλ€.
2. λλ²κΉ μ μ΄λ €μ
- μ€ν μμ μ λ©μλκ° κ²°μ λκΈ° λλ¬Έμ, λλ²κΉ
μ μ΄λ€ λ©μλκ° νΈμΆλ μ§ μμΈ‘νκΈ° μ΄λ ΅λ€.
μ 리
λ°νμ λ€νμ±μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μμ κ°λ ₯ν κ°λ μΌλ‘, μμ ν΄λμ€ λλ μΈν°νμ΄μ€ νμ μ ν΅ν΄ λ€μν νμ ν΄λμ€ κ°μ²΄λ₯Ό μ²λ¦¬ν μ μκ² ν΄μ€λ€. μ΄λ‘ μΈν΄ μ½λλ λμ± μ μ°ν΄μ§κ³ μ μ§λ³΄μκ° μ¬μμ§λ€. λ€λ§, μ€ν μμ μ λ©μλλ₯Ό κ²°μ νλ λμ λ°μΈλ©μΌλ‘ μΈν΄ μ±λ₯ μ νλ λλ²κΉ μ μ΄λ €μμ΄ μμ μ μμΌλ―λ‘, μ΄λ₯Ό μΌλμ λκ³ μ¬μ©ν΄μΌ νλ€.
'λΉ κ΅¬λ© μ±μ°κΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ£κ΅¬μ‘°] νΈλ¦¬ Tree (0) | 2024.09.04 |
---|---|
[Java] μ μΊμ€ν , λ€μ΄μΊμ€ν (0) | 2024.09.04 |
[OOP] λμ λ°μΈλ© (0) | 2024.09.04 |
[Java] HashSet ꡬν (0) | 2024.09.04 |
[Java] μ HashSet λ΄λΆμμ μ¬μ©λλ HashMapμ transient μμ½μ΄λ₯Ό μ¨μ μ μΈλμκΉ (4) | 2024.09.04 |