λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Programming/Java

18 Polymorphism

by Dowon Kang 2024. 1. 20.

λ‹€ν˜•μ„±(Polymorphism)은 κ°μ²΄ μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)μ—μ„œμ˜ μ€‘μš”ν•œ κ°œλ… μ€‘ ν•˜λ‚˜λ‘œ, λ™μΌν•œ μ½”λ“œκ°€ μ—¬λŸ¬ νƒ€μž…μ˜ κ°μ²΄μ—μ„œ λ‹€λ₯΄κ²Œ λ™μž‘ν•  μˆ˜ μžˆλŠ” λŠ₯λ ₯을 μ˜λ―Έν•©λ‹ˆλ‹€. 

λ‹€ν˜•μ„±μ€ μ½”λ“œμ˜ μœ μ—°μ„±μ„ λ†’이고 κ°μ²΄ κ°„μ˜ κ΄€κ³„λ₯Ό κ°„κ²°ν•˜κ²Œ ν‘œν˜„ν•˜λŠ” λ° κΈ°μ—¬ν•©λ‹ˆλ‹€.

 

- λΆ€λͺ¨ νƒ€μž…μœΌλ‘œ μžμ‹ νƒ€μž…μ˜ 객체 μ°Έμ‘° κ°€λŠ₯ (리λͺ¨μ»¨ κ°œμˆ˜κ°€ μž‘μœΌλ‹ˆκΉŒ)
- μžμ‹ νƒ€μž…μœΌλ‘œ λΆ€λͺ¨ νƒ€μž… 객체 μ°Έμ‘° λΆˆκ°€λŠ₯ (리λͺ¨μ»¨ κ°œμˆ˜κ°€ λ§ŽμœΌλ‹ˆκΉŒ)

 

더보기

 // λ‹€ν˜•μ„± - μ—¬λŸ¬κ°€μ§€ ν˜•νƒœλ₯Ό κ°€μ§ˆ μˆ˜ μžˆλŠ” λŠ₯λ ₯
class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void sound() {
        System.out.println("Dog barks");
    }
}

class Cat extends Animal {
    void sound() {
        System.out.println("Cat meows");
    }
}

public class PolymorphismExample {
    public static void main(String[] args) {
        Animal dog = new Dog(); // λ°˜λŒ€λ‘œ μžμ‹μ΄ λΆ€λͺ¨ κ°μ²΄λ₯Ό μ°Έμ‘°ν•  μˆ˜λŠ” μ—†λ‹€
        Animal cat = new Cat(); // μžμ‹ κ°μ²΄κ°€ λ¦¬λͺ¨μ»¨ κ°œμˆ˜κ°€ λ§ŽκΈ° λ•Œλ¬Έ

        dog.sound(); 
        cat.sound(); 
    }
}

 

 


 

 

instanceof μ—°μ‚°μž 

instanceofλŠ” Java와 κ°™μ€ κ°μ²΄ μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ μ‚¬μš©λ˜λŠ” μ—°μ‚°μž μ€‘ ν•˜λ‚˜λ‘œ, κ°μ²΄μ˜ νƒ€μž…을 ν™•μΈν•˜λŠ” λ°μ— μ“°μž…λ‹ˆλ‹€. μ΄ μ—°μ‚°μžλŠ” νŠΉμ • κ°μ²΄κ°€ νŠΉμ • ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€μΈμ§€ λ˜λŠ” νŠΉμ • μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ κ°μ²΄μΈμ§€ ν™•μΈν•˜λŠ” λ° μ‚¬μš©λ©λ‹ˆλ‹€.

더보기

class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}

public class InstanceOfExample {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        System.out.println(myDog instanceof Animal); // true
        System.out.println(myDog instanceof Dog);    // true
        System.out.println(myDog instanceof Cat);    // false

        System.out.println(myCat instanceof Animal); // true
        System.out.println(myCat instanceof Dog);    // false
        System.out.println(myCat instanceof Cat);    // true
    }
}

μœ„μ˜ μ˜ˆμ œμ—μ„œ instanceof μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ—¬ κ°μ²΄κ°€ μ–΄λ–€ ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€μΈμ§€ ν™•μΈν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ‹€ν–‰ μ€‘에 κ°μ²΄μ˜ νƒ€μž…을 λ™μ μœΌλ‘œ ν™•μΈν•  μˆ˜ μžˆμœΌλ©°, μ΄λŠ” λ‹€ν˜•μ„±κ³Ό κ΄€λ ¨λœ μ½”λ“œμ—μ„œ μœ μš©ν•˜κ²Œ ν™œμš©λ©λ‹ˆλ‹€.

 

 

 


 

 

ν˜•λ³€ν™˜ κ·œμΉ™ 

μ™œ 쑰상과 μžμ‹κ°„μ˜ ν˜•λ³€ν™˜μ„ ν•˜λŠ”κ°€ → μ‚¬μš©ν•  수 μžˆλŠ” λ©€λ²„μ˜ 개수λ₯Ό μ‘°μ ˆν•˜κΈ° μœ„ν•΄

 

 


Polymorphism is the ability of an object to take on many forms. The most common use of polymorphism in OOP occurs when a parent class reference refer to a child class object.

 

'Programming > Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

20 Exceptions  (0) 2024.01.21
19 Interface  (0) 2024.01.20
17 Abstraction  (0) 2024.01.20
16 Composition relationship  (0) 2024.01.20
15 Inheritance  (0) 2024.01.20

λŒ“κΈ€