JAVA/포스팅

자바 매개변수의 다형성

짜집퍼박사(짜박) 2023. 11. 12. 21:05

자바에서 매개변수의 다형성은 메소드나 생성자에 다양한 자료형을 전달할 수 있는 특징을 의미합니다. 다형성은 객체 지향 프로그래밍의 핵심 원리 중 하나로, 하위 클래스의 인스턴스가 상위 클래스 타입으로 다뤄질 수 있는 특징을 갖습니다. 이는 코드의 유연성과 확장성을 높여줍니다.

다형성을 이해하기 위해 먼저 다음과 같은 예제를 살펴보겠습니다.

class Animal {
    void sound() {
        System.out.println("Some sound");
    }
}

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

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

public class Main {
    void makeSound(Animal animal) {
        animal.sound();
    }

    public static void main(String[] args) {
        Main main = new Main();

        Animal animal1 = new Dog();
        Animal animal2 = new Cat();

        main.makeSound(animal1); // Bark
        main.makeSound(animal2); // Meow
    }
}

이 예제에서 Animal 클래스는 기본 동물을 나타내며, Dog와 Cat 클래스는 각각 개와 고양이를 나타냅니다. makeSound 메소드는 Animal 타입의 매개변수를 받아 해당 동물의 소리를 출력합니다.

주목할 점은 main 메소드에서 Animal 타입의 변수에 Dog와 Cat의 인스턴스를 할당하고 있습니다. 이렇게 할당된 인스턴스는 실제로 Dog나 Cat 타입이지만, 변수의 타입이 Animal로 선언되어 있습니다. 이것이 다형성의 한 예로서, 하위 클래스의 인스턴스가 상위 클래스의 타입으로 다뤄질 수 있는 특징입니다.

이러한 다형성의 장점은 다음과 같습니다.

 

1. 유연성과 확장성

새로운 하위 클래스를 추가하더라도 기존의 코드를 수정하지 않고도 메소드를 사용할 수 있습니다.

 

2. 코드 재사용

상위 클래스 타입을 사용하는 메소드는 어떤 하위 클래스의 인스턴스든지 다룰 수 있으므로, 같은 로직을 재사용할 수 있습니다.

 

3. 인터페이스와 함께 사용 가능

다형성은 인터페이스와 함께 사용되어 더욱 강력한 추상화를 제공합니다.

 

다형성은 상속과 함께 객체 지향 프로그래밍에서 중요한 개념이며, Java에서는 이를 효과적으로 활용할 수 있도록 다양한 문법과 키워드를 제공합니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 추상클래스의 작성  (0) 2023.11.12
자바 추상클래스  (0) 2023.11.12
자바 참조변수와 인스턴스의 연결  (0) 2023.11.12
자바 업캐스팅(Upcasting)  (0) 2023.11.12
자바 다운캐스팅(Downcasting)  (0) 2023.11.12