μΆμ²
ChatGPT
μ μΊμ€ν κ³Ό λ€μ΄μΊμ€ν μ μλ°μμ μμ κ΄κ³μ μλ ν΄λμ€ κ°μ κ°μ²΄λ₯Ό μΊμ€ν ν λ μ¬μ©νλ κ°λ μ΄λ€. λ κ°μ§ λͺ¨λ λ€νμ±(Polymorphism)μ νμ©ν΄ κ°μ²΄λ₯Ό μ²λ¦¬νλ μ€μν λ°©λ²μ΄λ€.
μ μΊμ€ν Upcasting
μ μΊμ€ν μ μμ ν΄λμ€μ κ°μ²΄λ₯Ό λΆλͺ¨ ν΄λμ€ νμ μΌλ‘ λ³ννλ κ²μ λ§νλ€. μλ°μμλ λͺ¨λ μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ νμ μ μμλ°κΈ° λλ¬Έμ, λͺ μμ μΈ μΊμ€ν μμ΄λ μ μΊμ€ν μ΄ κ°λ₯νλ€.
νΉμ§
- μμ ν΄λμ€μ κ°μ²΄κ° λΆλͺ¨ ν΄λμ€μ νμ μΌλ‘ λ³νλκΈ° λλ¬Έμ, λΆλͺ¨ ν΄λμ€μ μ μλ λ©μλλ§ νΈμΆν μ μλ€.
- μμ ν΄λμ€μ λ©μλκ° μ€λ²λΌμ΄λ©(μ¬μ μ)λ κ²½μ°, μ€μ μ€ν μμ μμλ μμ ν΄λμ€μ λ©μλκ° νΈμΆλλ€. μ΄λ₯Ό λ°νμ λ€νμ±μ΄λΌκ³ νλ€.
μ¬μ© μ΄μ
- λ€μν μμ ν΄λμ€λ₯Ό νλμ λΆλͺ¨ ν΄λμ€ νμ μΌλ‘ μ²λ¦¬ν μ μλ€.
- μ½λμ μΌκ΄μ± μ μ§ λ§ μ¬μ¬μ©μ± μ¦κ°
μμ
λλ¬Ό(Animal)μ΄λΌλ μμ ν΄λμ€μ μ΄λ₯Ό μμλ°λ μ¬λ¬ λλ¬Ό(μ: Dog, Cat) ν΄λμ€κ° μλ€κ³ κ°μ νμ. μ¬λ¬ λλ¬Ό κ°μ²΄λ₯Ό νλμ λ°°μ΄μ μ μ₯νκ³ , μ΄λ€μ λ°λ³΅μ μΌλ‘ μ²λ¦¬ν λ μ μΊμ€ν μ΄ μ μ©λ€.
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[] animals = new Animal[2];
animals[0] = new Dog(); // μ
μΊμ€ν
: Dog -> Animal
animals[1] = new Cat(); // μ
μΊμ€ν
: Cat -> Animal
for (Animal animal : animals) {
animal.makeSound(); // λ€νμ±: μ€μ κ°μ²΄μ λ©μλ νΈμΆ
}
}
}
κ²°κ³Ό
Bark
Meow
λ€μ΄μΊμ€ν Downcasting
λ€μ΄μΊμ€ν μ λΆλͺ¨ ν΄λμ€ νμ μΌλ‘ μ μΊμ€ν λ κ°μ²΄λ₯Ό λ€μ μμ ν΄λμ€ νμ μΌλ‘ λ³ννλ κ²μ λ§νλ€. λ€μ΄μΊμ€ν μ λͺ μμ μΈ μΊμ€ν μ΄ νμνλ€. λ€μ΄μΊμ€ν μ΄ μ±κ³΅νλ €λ©΄, μ€μ κ°μ²΄λ λ€μ΄μΊμ€ν λ νμ μ΄μ΄μΌ νλ€.
νΉμ§
- λ€μ΄μΊμ€ν μ ν λλ instanceof μ°μ°μλ₯Ό μ¬μ©ν΄ κ°μ²΄κ° νΉμ ν΄λμ€μ μΈμ€ν΄μ€μΈμ§ νμΈνλ κ²μ΄ μ’λ€.
- μλͺ»λ λ€μ΄μΊμ€ν μ ClassCastExceptionμ΄ λ°μν μ μλ€.
μ¬μ© μ΄μ
- λΆλͺ¨ ν΄λμ€ νμ μΌλ‘ μ²λ¦¬λ κ°μ²΄λ₯Ό λ€μ μμ ν΄λμ€ νμ μΌλ‘ λλ € μμ ν΄λμ€μ κ³ μ ν λ©μλλ₯Ό νΈμΆν μ μλ€.
- νΉμ μν©μμ μμ ν΄λμ€μ κ³ μ κΈ°λ₯μ΄ νμν λ μ μ©νλ€.
μμ
class Animal {
void makeSound() {
System.out.println("Some generic animal sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Bark");
}
void wagTail() {
System.out.println("Tail wagging");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // μ
μΊμ€ν
: Dog -> Animal
animal.makeSound(); // "Bark" μΆλ ₯ (λ€νμ±)
// λ€μ΄μΊμ€ν
ν Dog ν΄λμ€μ λ©μλ νΈμΆ
if (animal instanceof Dog) {
Dog dog = (Dog) animal; // λ€μ΄μΊμ€ν
: Animal -> Dog
dog.wagTail(); // "Tail wagging" μΆλ ₯
}
}
}
'λΉ κ΅¬λ© μ±μ°κΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ£κ΅¬μ‘°] ꡬ문 νΈλ¦¬ Syntax Tree, μΆμ ꡬ문 νΈλ¦¬ AST, Abstract Syntax Tree (0) | 2024.09.04 |
---|---|
[μλ£κ΅¬μ‘°] νΈλ¦¬ Tree (0) | 2024.09.04 |
[OOP] λ°νμ λ€νμ± (0) | 2024.09.04 |
[OOP] λμ λ°μΈλ© (0) | 2024.09.04 |
[Java] HashSet ꡬν (0) | 2024.09.04 |